【问题标题】:How do I output comparison for certain columns only using SAS?如何仅使用 SAS 输出某些列的比较?
【发布时间】:2016-07-26 15:57:45
【问题描述】:

我正在尝试比较两个 Excel 工作表(两个不同的工作簿)。 1)我已经导入了两个文件 - 很好 2)我在 SAS 中编写了一些代码,它带来了正确的输出

现在,我希望它只输出那些包含“最大”字样的列标题的比较。

代码如下:

PROC COMPARE
BASE=WORK.DATA_201605 
COMPARE=WORK.DATA_201606 
out=dif
outbase
outcomp
outnoequal
listall
OUTDIF 
METHOD=PERCENT 
CRITERION=10.00 maxprint=(1000);
ID Mainid;
run;

【问题讨论】:

    标签: sas


    【解决方案1】:

    使用dictionary.columns SQL 视图来确定列:

    过程 sql ; 选择不同的名称到 :VARLIST 中,用 ' ' 分隔 来自dictionary.columns 其中 libname = '工作' 和 memname = 'DIF' 和大写(名称),如 '%BIGGEST%' ; 退出 ; 过程打印数据=差异; var &VARLIST ; 跑 ;

    【讨论】:

    • 更明确地说,这将在 PROC SQL 之后结束,以过滤/选择代码中的变量:PROC COMPARE BASE=WORK.DATA_201605(keep=&VARLIST.) COMPARE=WORK.DATA_201606(keep=&varlist.)...
    【解决方案2】:

    您是否尝试过 VAR 语句?与冒号一起缩短您的前缀。 比如:

    Var biggest: ;
    

    【讨论】:

    • 我有很多列,其中包含最大的单词。所以我只需要对其中包含“最大”一词的列进行比较。我将如何编辑代码?抱歉,我对 SAS 还很陌生。
    • 冒号告诉 SAS 查看以最大前缀开头的所有列。在 Run 语句之前将此行添加到您的 proc compare 中。
    • 我从最大开始读它。如果最大可以在名称中的任何位置,这将不起作用。
    猜你喜欢
    • 2018-06-09
    • 2022-01-09
    • 1970-01-01
    • 2020-06-06
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多