2014-09-02 77 views
1

我想知道是否有辦法在多個類別上執行freq,以便最終創建一個總體記錄,然後在它下面記下子類別?Proq Freq:多個類別

目前,你將不得不做2個頻率,然後2個轉置,然後將數據設置在一起。下面是我通常會完成這個的方法,但是有一種方法可以在1 freq中完成嗎?

Proc freq data = data noprint; 
tables CATEGORY*SUBCATEGORY /out = Data1; 
tables CATEGORY    /out = Data2; 
Run; 

Proc sort data = DATA1 out = DATA1; by CATEGORY SUBCATEGORY; Run; 
Proc sort data = DATA2 out = DATA2; by CATEGORY; Run; 

Proc transpose data = DATA1 out = DATA1; 
    var COUNT; 
    by CATEGORY SUBCATEGORY; 
Run; 

Proc transpose data = DATA2 out = DATA2; 
    var COUNT; 
    by CATEGORY; 
Run; 

data Final; 
    set DATA1 DATA2; 
run; 

回答

2

使用PROC SUMMARY而不是FREQ,TYPES語句使您可以選擇要彙總的組。這隻涉及一個步驟。

proc summary data=data; 
class CATEGORY SUBCATEGORY; 
types CATEGORY CATEGORY*SUBCATEGORY; 
output out=want(drop=_type_ rename=(_freq_=COUNT)); 
run; 
+0

有也到商店中的類別總計數 都在相同的步驟失蹤SUBCATEGORY行自動分配範疇變量名的方式,很明顯,我可以在接下來的數據進行賦他們,但只是想知道如果這一切都可能在一個步驟? – 2014-09-02 13:12:43

+0

我不這麼認爲,如果2個變量是不同的數據類型,你可能會遇到問題 – Longfish 2014-09-02 13:58:50

+0

好的,非常感謝Keith。 – 2014-09-02 14:04:19