关于SAS中的"数据合并"

use*_*609 3 sas

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

data newdata;
merge yourdata (in=a) otherdata (in=b);
by permno date;   
Run Code Online (Sandbox Code Playgroud)

我不知道"(in = a)"和"(in = b)"是什么意思?谢谢.

sas*_*rog 7

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

如果你看到它可能会更容易理解

data newdata;
merge yourdata(in=ThisRecordIsFromYourData) otherdata(in=ThisRecordIsFromOtherData);
by permno date;
run;
Run Code Online (Sandbox Code Playgroud)

假设您需要在此步骤中操作数据中的记录,而不是来自其他数据的记录,您可以执行类似的操作

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;
Run Code Online (Sandbox Code Playgroud)

这些变量的一个显而易见的用途是使用if语句来控制将发生什么样的"合并" .例如,if ThisRecordIsFromYourData and ThisRecordIsFromOtherData;将使SAS仅包含与两个输入数据集中的by变量匹配的行(如内部联接).