2015-10-06 194 views
0

在SAS中的数据集中,我有多次观察。我正在尝试做的是:我正在尝试添加一个包含每个观察频率的列,并确保在数据集中只保留一次。我必须为具有多行和大约8个变量的数据集执行此操作。如何删除所有重复的观察结果,但在SAS中添加一个具有频率的列?

name  id  address age 
jack  2  chicago  50 
peter 4  new york 45 
jack  2  chicago  50 

这将有可能成为:

name  id  address age  frequency 
jack  2  chicago 50  2 
peter 4  new york 45  1 

是否有任何人谁知道如何做到这一点的SAS(最好不使用SQL)? 非常感谢!

+0

嗯,你为什么不想使用SQL?你只需要使用不同的和计数,这将是非常简单的。对于一个datastep解决方案,我会自发地想到使用proc freq语句并与原始数据集合并。 – kl78

+0

它适用于我们不应该使用SQL的课程。好吧,我会尝试这样的,谢谢:) –

+0

嗯,我想proc摘要是你在找什么,你应该谷歌它... – kl78

回答

1

@ kl78是对的,proc summary是这里最好的非sql解决方案。这会在内存中运行,这可能会导致非常大的数据集出现问题,但是您应该可以使用8列。

class _all_将按所有变量进行分组,默认输出频率,因此不需要指定任何度量。我已经放弃了另一个自动变量_type_,因为它与此处不相关,因此将其重命名为_freq_

data have; 
input name $ id address &$ age; 
datalines; 
jack  2  chicago  50 
peter 4  new york 45 
jack  2  chicago  50 
; 
run; 

proc summary data=have nway; 
class _all_; 
output out=want (drop=_type_ rename=(_freq_=frequency)); 
run; 
相关问题