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;
    
  • 第二个数据集有1个观测值:

    data ds2;
      var2=1;
    run;
    
  • 每个数据集中变量的数量是不相关的

    我想将DS2中的单个观测值与DS1中的所有观测值合并,以获得:

    数据集DS3:

    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-我已经更新了这个问题。第二个解决方案就是我一直在寻找的。谢谢