两次使用“设置”组合SAS中的数据集

时间:2019-11-08 07:15:03

标签: sas set

这是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;

2 个答案:

答案 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)

这是您的数据步骤正在做的事情。

在第一次迭代中,它将:

  1. 从ONE读取第一个观测值,这将设置A = 1和B = 5。
  2. 从3中读取第一个观察值,它将设置A = 21,B = 24和E = 29。
  3. 最后将输出。因此,A = 21,B = 24和E = 29。

请注意,BY语句将无效(除非三个未按A排序)。

然后在第二次迭代中,来自每个数据集的第二次观察将发生相同的情况。

在第三次迭代中,数据步骤在读取超过数据集ONE末尾时将停止。

您是否打算交错插入两个数据集中的记录?在这种情况下,您只需要一个包含两个数据集的SET语句。

 set one three;
 by a;

然后,BY语句有意义。这将确保按A的值顺序读取和写入记录。请注意,对于您的示例数据,是否包含BY语句都没有关系,因为ONE中A的所有值都小于最小值的三分之二。