这是SAS代码,我正在学习有关数据组合的信息。 我不了解哪些数据集中的哪些数据进入了新的合并数据集中。
我试图用Google搜索这种语法,但是找不到很好的解释。
如果您对此有所解释,或者提供一些可以再次搜索的关键字,我将不胜感激。
data one;
input a b;
cards;
1 5
2 6
;
data three;
input a b e;
cards;
21 24 29
22 25 30
23 26 31
;
data combine;
set one;
set three;
by a;
run;
答案 0 :(得分:0)
在最后一个数据步骤中的BY语句在您的示例中不起作用,如果不执行该操作,将得到相同的结果。有关BY组处理的更多信息,您可以阅读https://support.sas.com/resources/papers/proceedings/proceedings/forum2007/222-2007.pdf。
关于SET语句,您将在https://support.sas.com/resources/papers/proceedings/proceedings/sugi23/Begtutor/p50.pdf中找到答案,以及有关此主题的许多其他有用信息。
答案 1 :(得分:0)
这是您的数据步骤正在做的事情。
在第一次迭代中,它将:
请注意,BY语句将无效(除非三个未按A排序)。
然后在第二次迭代中,来自每个数据集的第二次观察将发生相同的情况。
在第三次迭代中,数据步骤在读取超过数据集ONE末尾时将停止。
您是否打算交错插入两个数据集中的记录?在这种情况下,您只需要一个包含两个数据集的SET语句。
set one three;
by a;
然后,BY语句有意义。这将确保按A的值顺序读取和写入记录。请注意,对于您的示例数据,是否包含BY语句都没有关系,因为ONE中A的所有值都小于最小值的三分之二。