2015-06-26 42 views
4

我知道的Teradata或其他SQL平臺,您可以通過找到數不同的變量的組合:如何統計SAS Proc Sql中兩個變量的級聯/交叉?

從db.tableSELECT COUNT(不同X1 || X2)

這將給出x1,x2對的所有獨特組合。

但是,該語法在proc sql中不起作用。

有沒有辦法在proc sql中執行這樣的計數?

謝謝。

+0

你能在PROC SQL –

+0

權數(不同的列名),但我不想要的唱變量計數;我想要兩個(或更多)變量組合的不同數量的計數。 –

回答

9

該語法在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; 
+0

謝謝!我的領域都是數字,所以我不得不使用貓(x1,x2),它的工作 –

2

這可能是多餘的,但是當你提到「組合」時,它立即引發了我的想法中的'排列'。因此,這裏是一個解決方案來區分這兩種:

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; 
+0

這看起來像它會實現我想要的。謝謝。 –