比较SAS中两个不同数据集中的变量

时间:2015-04-20 11:54:34

标签: sas

我需要比较两个不同数据集中的两个变量,这两个变量的变量名称不同,如果记录匹配,我需要在SASYES中编写观察结果,然后将其写入SASNO。

我正从DB2检索记录并重命名变量。

我的sas代码

DATA _NULL_;
   SET WORKLIST;
   SET UNITFUNC;
   IF PRIMNUM=CORRPMNM AND MODELCD=MCMODEL THEN DO; 
      FILE SASYES; 
      PUT @01  ANSFACT1 $CHAR7. 
          @09  CORRPMNM $CHAR12.
          @21  MCMODEL  $CHAR8. 
      OUTPUT SASYES; 
   END; 
   ELSE DO; 
      FILE SASNO; 
      PUT  @01  ANSFACT1 $CHAR7. 
           @09  CORRPMNM $CHAR12. 
           @21  MCMODEL  $CHAR8. 
      OUTPUT SASNO;
   END;
RUN;  

当我提交代码时,所有观察结果都写入SASNO,即使它们与两个数据集中的观察结果很少匹配。请帮我。

注意:我也使用MERGE来读取两个表中的数据,结果是一样的。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

SET一次占用一行,从不比较数据集。就像拿一叠卡片并将它放在另一张卡片上面一样,然后一次拿一张卡片。

MERGE结合了两个数据集,因此您可以将两叠卡片放在一起并将它们并排放置,并一次查看每个堆叠的顶部。这就是你想要做的事情:合并它们。

data compare;
  merge ds1 ds2;
  by commonID;
run;

您可能希望合并by ID变量,或者您可能希望合并而不使用by语句来比较每个数据集的第一条记录,每个数据集的第二条记录等。< / p>

data compare;
  merge ds1 ds2;
run;

您可以在该数据步骤中添加代码以进一步限制输出内容,或者您​​可以合并到一个数据集中,然后直观地查看它并随后创建其他代码。