Объединить одну строку со всеми за один шаг данных - PullRequest
2 голосов
/ 20 марта 2012

Два набора данных:

  1. Первый набор данных имеет много наблюдений:

    data ds1;
      do var1=1 to 3;
        output;
      end;
    run;
    
  2. Второй набор данных имеет 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;

Можно ли выполнить это с помощью один шаг данных?

1 Ответ

8 голосов
/ 20 марта 2012

Если 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;
...