我正在研究SAS中的数据合并,并找到以下示例
data newdata; merge yourdata (in=a) otherdata (in=b); by permno date;
我不知道“(in = a)”和“(in = b)”是什么意思?谢谢。
yourdata(in=a)在名为“ a”的程序数据向量中创建一个标志变量,如果记录来自您的数据,则包含1;如果不是,则包含0。然后,您可以使用这些变量基于记录的源执行条件操作。
yourdata(in=a)
如果您看到了,可能会更容易理解
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变量匹配的行(例如内部联接)。
if
if ThisRecordIsFromYourData and ThisRecordIsFromOtherData