R 如何在SAS中的两个数据集之间执行列绑定?

R 如何在SAS中的两个数据集之间执行列绑定?,r,sas,R,Sas,我有两个包含相同行数的数据集。 我想对这两个数据集执行列绑定以创建第三个数据集。 我们如何在SAS中执行此操作 这可以在R中使用cbind()完成,SAS中是否有等效功能?您可以使用|函数 例如: proc iml; x1=j(5,1,1); x2=j(5,1,2); data1=x1||x2; x1=j(5,1,3); x2=j(5,1,4); data2=x1||x2; data=data1||data2; print data; run; quit; 结果: data 1 2 3

我有两个包含相同行数的数据集。 我想对这两个数据集执行列绑定以创建第三个数据集。 我们如何在SAS中执行此操作


这可以在R中使用cbind()完成,SAS中是否有等效功能?

您可以使用
|
函数

例如:

proc iml;
x1=j(5,1,1);
x2=j(5,1,2);
data1=x1||x2;
x1=j(5,1,3);
x2=j(5,1,4);
data2=x1||x2;
data=data1||data2;
print data;
run;
quit;
结果:

   data 
1 2 3 4 
1 2 3 4 
1 2 3 4 
1 2 3 4 
1 2 3 4 

简单的合并应该可以在SAS中工作。如果省略
by
语句,则它将在行号上合并。首先检查
mergenoby
选项的设置,确保它没有设置为错误

proc options option=mergenoby;
run;
如果设置为error,则在合并之前运行以下语句

option mergenoby=nowarn;
否则,此merge语句将按行号连接两个数据集

data ds1;
input a b c;
datalines;
1 2 3
6 7 8
11 12 13
;
run;

data ds2;
input d e;
datalines;
4 5
9 10
14 15
;
run;

data ds3;
merge ds1 ds2;
run;

下面的代码还将对输入数据集生成列绑定操作,并生成输出数据集。输出数据集“out”将包含四个变量a、b、c和d以及三个观察值

data ds1;
 input a b;
 datalines;
10 20
50 60
70 90
;
run;

data ds2;
input c d;
datalines;
11 22
55 77
88 99
;
run;

data out; /* Third data step */
 set ds1;
 set ds2;
run;
输出数据集输出将如下所示:

a   b  c  d
10 20 11 22
50 60 55 77
70 90 88 99
工作:对于第三个数据步骤的每个循环,来自两个输入数据集ds1和ds2的每个观测值将被提取到PDV中,并且输出被写入输出数据集

如果两个输入数据集的行数相同,则此步骤将非常有效。如果任何一个输入数据集中的行数较少,则每当该数据集的数据结束时,数据步骤将终止,并且输出数据集的观测数将等于观测数较少的输入数据集。i、 e.如果ds1和ds2各包含10个和5个观察值,则输出数据集out将仅包含5个观察值。

并且您可以使用(//)来表示RBIND为什么不?
proc iml;x1=j(5,1,1);x2=j(5,1,2);x3=j(5,1,3);x4=j(5,1,4);数据=x1 | | x2 | | x3 | | x4;打印数据;跑退出
data ds1;
 input a b;
 datalines;
10 20
50 60
70 90
;
run;

data ds2;
input c d;
datalines;
11 22
55 77
88 99
;
run;

data out; /* Third data step */
 set ds1;
 set ds2;
run;