Sas 在单个数据步骤中将一行合并为所有行
两个数据集:Sas 在单个数据步骤中将一行合并为所有行,sas,Sas,两个数据集: 第一个数据集有许多观察结果: data ds1; do var1=1 to 3; output; end; run; 第二个数据集有1个观测值: data ds2; var2=1; run; 每个数据集中变量的数量是不相关的 我想将DS2中的单个观测值与DS1中的所有观测值合并,以获得: 数据集DS3: VAR1 VAR2 1 1 2 1 3 1 我知道我可以使用PROC SQL步骤来实现这一点: proc sql noprint;
data ds1;
do var1=1 to 3;
output;
end;
run;
data ds2;
var2=1;
run;
VAR1 VAR2
1 1
2 1
3 1
我知道我可以使用PROC SQL步骤来实现这一点:
proc sql noprint;
create table ds3 as
select a.*, b.*
from ds1 as a, ds2 as b;
quit;
是否可以用一个单个数据步骤来执行此操作?如果VAR2总是为1,那么这将起作用:
ds3;
retain var2 1;
do var1 = 1 to 3;
output;
end;
run;
ds3;
set ds1;
if _n_ eq 1 then do;
set ds2;
end;
run;
类似地,如果DS1和DS2已经存在,并且DS2只有一个观察值,如您的示例所示,那么这应该可以工作:
ds3;
retain var2 1;
do var1 = 1 to 3;
output;
end;
run;
ds3;
set ds1;
if _n_ eq 1 then do;
set ds2;
end;
run;
您的数据样本太小,无法完全理解您想要的内容。您是说您将在VAR1中有一个具有多个值的数据集,在VAR2中有一个具有1个值的数据集,并且您希望使用数据步骤将它们合并到一个数据集中吗?那么你的单变量VAR2在合并数据集中的每个观测值中都存在吗?@CarolinaJay65-我已经更新了这个问题。第二个解决方案就是我一直在寻找的。谢谢