如何计算SAS Proc Sql中两个变量的串联/交叉的不同?

时间:2015-06-26 16:16:36

标签: sas proc-sql

我知道在teradata或其他sql平台上你可以通过以下方式找到变量组合的计数:

选择计数(不同的x1 || x2) 来自db.table

这将给出x1,x2对的所有独特组合。

但是,这种语法在proc sql中不起作用。

无论如何都要在proc sql中执行这样的计数吗?

感谢。

2 个答案:

答案 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;

答案 1 :(得分: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;