2014-09-02 3 views
1

Я хотел бы узнать, есть ли способ сделать freq для нескольких категорий, чтобы вы получили общую общую запись, а затем подкатегории подсчитывали под ней?Proq Freq: несколькими категориями

На данный момент вам нужно будет сделать 2 freqs, а затем 2 транспонирует, а затем устанавливает данные вместе. Ниже приводится способ, которым я обычно выполнял бы это, но есть ли способ сделать это в 1 частоте?

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 СУЩНОСТЬ вместо FREQ, оператор ТИПЫ позволяет выбрать, какие группы подвести итоги. Это просто один шаг.

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

Есть также способ автоматического присвоения КАТА имени переменного недостающей ПОДКАТЕГОРИИ строки, хранящей категория общего счет все в той же стадии, очевидно, я могу назначить их на следующем этапе обработки данных, но просто интересно если можно все за один шаг? –

+0

Я не верю в это, вы можете столкнуться с проблемами, если две переменные имеют разные типы данных. – Longfish

+0

Хорошо, спасибо большое Киту. –

Смежные вопросы