Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算SAS Proc Sql中两个变量的串联/交叉的不同值?_Sas_Proc Sql - Fatal编程技术网

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

如何计算SAS Proc Sql中两个变量的串联/交叉的不同值?,sas,proc-sql,Sas,Proc Sql,我知道,在teradata或其他sql平台中,通过执行以下操作,可以发现变量组合的计数不同: 选择计数(不同x1 | | x2) 来自数据库表 这将给出x1,x2对的所有唯一组合 但是,此语法在proc sql中不起作用 在proc sql中是否仍有执行此类计数的方法 谢谢。这种语法在PROC-SQL中工作得非常好 proc sql; select count(distinct name||sex) from sashelp.class; quit; 如果字段是数字字段,则必须将其

我知道,在teradata或其他sql平台中,通过执行以下操作,可以发现变量组合的计数不同:

选择计数(不同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;

这可能是多余的,但当你提到“组合”时,它立刻在我脑海中引发了“排列”。因此,这里有一个解决方案来区分这两种:

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;
数据测试;
输入(X1-X2)($8.);
卡;
A B
B A
C D
C D
;
PROC-SQL;
选择计数(*)作为总数,选择计数(不同类别(X1,X2))作为排列,
将(不同的猫(IFC(X1X2,X1,X2))计数为组合
从测试开始;
退出

您可以在proc sqlRight中进行计数(不同的列名称),但我不想要sing变量的计数;我想要两个(或更多)变量组合的不同数量的计数。谢谢!。我的两个字段都是数字字段,所以我不得不使用cats(x1,x2),它工作了。看起来它也能实现我想要的。谢谢