2011-01-20 83 views
3

我学习的SAS数据合并,并找到下面的例子关于“数据合并”在SAS

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

我不知道该怎么办“(在=一)”和“(在= B) “ 意思?谢谢。

回答

7

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

如果你看到

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

假设需要从yourdata记录在此步骤进行操作可能更容易理解,而不是那些从otherdata,然后你可以做这样的事情

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语句控制将发生什么样的“合并”。例如,if ThisRecordIsFromYourData and ThisRecordIsFromOtherData;将使SAS只包含匹配来自两个输入数据集的变量(如内连接)的行。

+1

还应该注意的是,这些标志变量不会保存在正在创建的数据集中。如果你想保留它们,我通常会创建像这样的附加变量:a1 = a; b1 = b;然后在输出数据集中引用a1和b1。 – 2011-01-21 15:30:12