在单个数据步骤中将一行合并到所有行

时间:2012-03-20 16:29:10

标签: sas

两个数据集:

  1. 第一个数据集有很多观察结果:

    data ds1;
      do var1=1 to 3;
        output;
      end;
    run;
    
  2. 第二个数据集有1个观察结果:

    data ds2;
      var2=1;
    run;
    
  3. 每个数据集中的变量数量无关紧要。

    我想将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;
    

    是否可以使用单个数据步骤进行预测?

1 个答案:

答案 0 :(得分:8)

如果VAR2总是为1,那么这将起作用:

ds3;
   retain var2 1;
   do var1 = 1 to 3;
      output;
   end;
run;

同样,如果DS1和DS2已经存在且DS2只有一个观察点,那么这应该有效:

ds3;
   set ds1;
   if _n_ eq 1 then do;
      set ds2;
   end;
run;