Sas 级联与交织

Sas 级联与交织,sas,Sas,我无法理解交错和串联 交错 proc sort data=ds1 out=ds1; by var1; run; proc sort data=ds2 out=ds2; by var1; run; data testInterleaving ; set ds1 ds2 ; run ; 串联 data testConcatenation; set ds1 ds2; run; 我测试了这些数据集,得到的数据集完全相同,除了

我无法理解
交错
串联

交错

proc sort data=ds1 
           out=ds1;
   by var1;
run;
proc sort data=ds2 
           out=ds2;
   by var1;
run;
 data testInterleaving ; 
 set ds1 ds2 ;
 run ;
串联

data testConcatenation; 
   set ds1 ds2;
run;

我测试了这些数据集,得到的数据集完全相同,除了观察的顺序,我认为这并不重要。两个结果数据集包含完全相同的观察结果。那么,除了顺序之外,还有什么不同呢?

结尾的数据步骤是完全相同的。您正在执行相同的代码,无论您是否提前排序

我认为你在交错中的意思是

data testInterleaving ;
MERGE ds1 ds2;
by var1;
run;

set
语句按您列出的顺序顺序依次读取数据集。
merge
语句比较集合之间的记录,并按照
by
语句中变量的顺序将它们放入输出。我建议查看关于
merge
语句的SAS文档,因为这是对一个非常强大的工具的非常简单的解释。

最后的数据步骤完全相同。您正在执行相同的代码,无论您是否提前排序

我认为你在交错中的意思是

data testInterleaving ;
MERGE ds1 ds2;
by var1;
run;

set
语句按您列出的顺序顺序依次读取数据集。
merge
语句比较集合之间的记录,并按照
by
语句中变量的顺序将它们放入输出。我建议您查看有关
merge
语句的SAS文档,因为这是对一个非常强大的工具的一个非常简单的解释。

SAS定义为使用BY语句和SET语句。包含的链接显示两个数据集,按相同的变量排序,使用by语句和set语句生成一个数据集

SAS定义为将BY语句与SET语句一起使用。包含的链接显示两个数据集,按相同的变量排序,使用by语句和set语句生成一个数据集

正如CarolinaJay所指出的,交织是将
SET
BY
相结合。它不是合并,也不仅仅是设置前的排序

例如,让我们创建一对数据集,
sashelp.class
的女性和男性成员

data male female;
set sashelp.class;
if sex='F' then output female;
else output male;
run;

proc sort data=male;
by name;
run;
proc sort data=female;
by name;
run;

data concatenated;
set male female;
run;

data interleaved;
set male female;
by name;
run;
现在,看看数据集
Concatenated
是所有的雄性,然后是所有的雌性-它依次处理
set
语句,在进入第二个语句之前耗尽第一个语句


交错排列的是按姓名顺序排列的,而不是按性别排列的。这是因为它按名称遍历两个(在本例中)数据集
set
,跟踪它在
name
顺序中的位置。您可以添加调试语句(使用数据步调试器,或向数据步添加一个
put\u all
)来查看它的工作原理。

正如CarolinaJay所指出的,交错是将
设置
通过
组合。它不是合并,也不仅仅是设置前的排序

例如,让我们创建一对数据集,
sashelp.class
的女性和男性成员

data male female;
set sashelp.class;
if sex='F' then output female;
else output male;
run;

proc sort data=male;
by name;
run;
proc sort data=female;
by name;
run;

data concatenated;
set male female;
run;

data interleaved;
set male female;
by name;
run;
现在,看看数据集
Concatenated
是所有的雄性,然后是所有的雌性-它依次处理
set
语句,在进入第二个语句之前耗尽第一个语句


交错排列的
是按姓名顺序排列的,而不是按性别排列的。这是因为它按名称遍历两个(在本例中)数据集
set
,跟踪它在
name
顺序中的位置。您可以添加调试语句(使用数据步骤调试器,或向数据步骤添加
put\u all
)以查看其工作原理。

交错与合并是一个不同的概念。这是从@CarolinaJay65的回答中收集的。这也是为什么我投票支持她的答案!交错是一个与合并不同的概念。这是从@CarolinaJay65的答案中收集到的。这也是为什么我投票支持她的答案!