我需要比较两个不同数据集中的两个变量,这两个变量的变量名称不同,如果记录匹配,我需要在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
来读取两个表中的数据,结果是一样的。
有人可以帮忙吗?
答案 0 :(得分:0)
SET一次占用一行,从不比较数据集。就像拿一叠卡片并将它放在另一张卡片上面一样,然后一次拿一张卡片。
MERGE结合了两个数据集,因此您可以将两叠卡片放在一起并将它们并排放置,并一次查看每个堆叠的顶部。这就是你想要做的事情:合并它们。
data compare;
merge ds1 ds2;
by commonID;
run;
您可能希望合并by
ID变量,或者您可能希望合并而不使用by
语句来比较每个数据集的第一条记录,每个数据集的第二条记录等。< / p>
data compare;
merge ds1 ds2;
run;
您可以在该数据步骤中添加代码以进一步限制输出内容,或者您可以合并到一个数据集中,然后直观地查看它并随后创建其他代码。