【问题标题】:about "data merge" in SAS关于 SAS 中的“数据合并”
【发布时间】:2011-01-20 22:04:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: sas


    【解决方案1】:

    yourdata(in=a) 在程序数据向量中创建一个名为“a”的标志变量,如果记录来自 yourdata,则该变量包含 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 语句来控制将发生什么样的“合并”。例如,if ThisRecordIsFromYourData and ThisRecordIsFromOtherData; 将使 SAS 仅包含与两个输入数据集的 by 变量匹配的行(如内连接)。

    【讨论】:

    • 还应该注意,这些标志变量不会保存在正在创建的数据集中。如果你想保留它们,我通常会创建这样的附加变量:a1=a;b1=b;然后在输出数据集中引用 a1 和 b1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多