我知道的Teradata或其他SQL平臺,您可以通過找到數不同的變量的組合:如何統計SAS Proc Sql中兩個變量的級聯/交叉?
從db.tableSELECT COUNT(不同X1 || X2)
這將給出x1,x2對的所有獨特組合。
但是,該語法在proc sql中不起作用。
有沒有辦法在proc sql中執行這樣的計數?
謝謝。
我知道的Teradata或其他SQL平臺,您可以通過找到數不同的變量的組合:如何統計SAS Proc Sql中兩個變量的級聯/交叉?
從db.tableSELECT COUNT(不同X1 || X2)
這將給出x1,x2對的所有獨特組合。
但是,該語法在proc sql中不起作用。
有沒有辦法在proc sql中執行這樣的計數?
謝謝。
該語法在PROC SQL中工作得很好。
proc sql;
select count(distinct name||sex)
from sashelp.class;
quit;
如果字段是數值,你必須把他們的字符(使用put
),或使用cat
或它的兄弟姐妹之一,它樂意接受數字或字符。
proc sql;
select count(distinct cats(age,sex))
from sashelp.class;
quit;
謝謝!我的領域都是數字,所以我不得不使用貓(x1,x2),它的工作 –
這可能是多餘的,但是當你提到「組合」時,它立即引發了我的想法中的'排列'。因此,這裏是一個解決方案來區分這兩種:
DATA TEST;
INPUT (X1 X2) (:$8.);
CARDS;
A B
B A
C D
C D
;
PROC SQL;
SELECT COUNT(*) AS TOTAL, COUNT(DISTINCT CATS(X1,X2)) AS PERMUTATION,
COUNT(DISTINCT CATS(IFC(X1<=X2,X1,X2),IFC(X1>X2,X1,X2))) AS COMBINATION
FROM TEST;
QUIT;
這看起來像它會實現我想要的。謝謝。 –
你能在PROC SQL –
權數(不同的列名),但我不想要的唱變量計數;我想要兩個(或更多)變量組合的不同數量的計數。 –