此刻我正在学习SAS,我想知道如何在不使用任何SQL的情况下联接两个表,而我只需要在两个表中获取公共值即可。
两个表都有一个共同的唯一ID。这些表也没有公共变量。 请不要提供任何已有的文档链接,我知道合并。我正在尝试使用IN运算符。
说明:第一个表有157条记录,另一个表有161条记录。 我尝试搜索解决方案,但没有得到任何解决方案。请参考解决方案。
谢谢!
答案 0 :(得分:4)
在DATA步骤中,您将需要使用MERGE
语句和IN=
选项,该选项会设置一些标志,指示对程序数据向量(PDV)当前状态的“贡献”。
data want;
merge
have1 (in=_from1)
have2 (in=_from2)
;
by uniqueid; * variable of same name, type and length should be in have1 and have2;
if _from1 and _from2; * subsetting if;
run;
DATA步骤是一个隐式循环。 MERGE会自动通过贡献数据进行读取,并同步BY变量。
当DATA步骤没有显式的OUTPUT语句时,当控制到达该步骤的底部时,PDV中的值将存在一个隐式OUPUT。因此,如果没有if的if称为子集,因为当两个标志都为真(或者当数据来自两个表且具有相同的键值)时,控制仅经过if(并且到达隐式输出的底部)