小编典典

关于SAS中的“data merge”

sql

我正在研究SAS中的数据合并,并找到以下示例

data newdata;
merge yourdata (in=a) otherdata (in=b);
by permno date;   

我不知道“(in = a)”和“(in = b)”是什么意思?谢谢。


阅读 362

收藏
2021-03-23

共1个答案

小编典典

yourdata(in=a)在名为“ a”的程序数据向量中创建一个标志变量,如果记录来自您的数据,则包含1;如果不是,则包含0。然后,您可以使用这些变量基于记录的源执行条件操作。

如果您看到了,可能会更容易理解

data newdata;
merge yourdata(in=ThisRecordIsFromYourData) otherdata(in=ThisRecordIsFromOtherData);
by permno date;
run;

假设在此步骤中需要处理您数据中的记录,而无需处理其他数据中的记录,则可以执行以下操作

data newdata;
merge yourdata(in=ThisRecordIsFromYourData) otherdata(in=ThisRecordIsFromOtherData);
by permno date;
if ThisRecordIsFromYourData then do;
  * some operation here for yourdata records only ;
end;
run;

这些变量的一个明显用途是使用if语句控制将发生哪种“merge” 。例如,if ThisRecordIsFromYourData and ThisRecordIsFromOtherData;将使SAS仅包括与两个输入数据集中的by变量匹配的行(例如内部联接)。

2021-03-23