2017-01-28 40 views
0

我創造了這個fakedata爲例:總結通過字符值在SAS

data fakedata; 
length name $5; 
infile datalines; 
input name count percent; 
return; 
datalines; 
Ania 1 17 
Basia 1 3 
Ola 1 10 
Basia 1 52 
Basia 1 2 
Basia 1 16 
; 
run; 

我想要的結果是:

table

--->總結計數和百分比爲巴西亞

我想爲巴西亞總結點數和百分比,因爲她只有一次在表中的數字4和百分比83.我試着交換名稱到一個如果要在proc sql中執行GROUP BY,但它會按順序變化(我有這樣的錯誤)。假設它並不困難,但我找不到解決方案。我也試過一些沒有成功的數組。任何幫助感謝!

+0

你應該包括你想要得到的輸出。 –

+0

好吧,即時寫作 – aniusni

回答

1

這聽起來像proc sql你想要做什麼:

proc sql; 
    select name, count(*) as cnt, sum(percent) as sum_percent 
    from fakedata 
    group by name; 

您可以添加where條款得到的結果只是一個名字。

+0

它發生了一個錯誤:摘要函數僅限於SELECT和HAVING子句:( – aniusni

+0

@aniusni ...「order by」對您的結果似乎不是必要的,無論如何,您可以使用'如果你想按順序排列,按'sum_percent'命令。 –

+0

好的,按順序並退出它的工作:) – aniusni

0

嗯,其實我找到了答案。

proc summary data=fakedata; 
by name; 
var count percent; 
output out=wynik (drop = _FREQ_ _TYPE_) sum(count)=count sum(percent)=percent; 
run; 
+1

你的語法有點多餘,你可以使用。 輸出= wynik(drop = _ :) sum =; –

0

您可以返回一個步驟並使用PROC FREQ最有可能在一個步驟中生成此輸出。根據計數百分比是不正確的,但我不確定他們的目的是,現在他們加起來超過100%。如果您已有一些摘要,則使用WEIGHT聲明來說明計數。

proc freq data=fakedata; 
table name; 
weight count; 
run;