2015-10-06 199 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; 
相關問題