M×Nのデータ結合

  • N×Mのマッチマージ
 【問題】data1、data2からdata3を作成する。
/*---------------*
  data create
 *---------------*/
 
data data1;
   length id 8 ae1 $3;
   do id=1 to 2;
      ae1="A"; output;
      ae1="B"; output;
   end;
run;
 
data data2;
   infile cards;
   length id 8 ae2 $3;
   input id ae2;
cards;
1 X
2 X
2 Y
2 Z
3 X
;
run;
 
/*--------------------*
  merge (SQL)
 *-------------------*/
 
proc sql;
   create table data3 as
   select a.*     ,
          b.ae2
   from data1 as a full join data2 as b
   on a.id = b.id
   ;
quit;
 
* data2(b)にしかidがない場合、id変数が欠測になってしまうので何か対策が必要(>_<) *;
 
/*--------------------*
  merge
 *--------------------*/
proc transpose data=data1 out=data11;
   var ae1;
   by id;
run;
 
data data12;
   merge data11(in=in1)
         data2;
   by id;
   keep id ae1 ae2;
 
   array a_var[*] col:;
   if in1 then do;
     do i= 1 to dim(a_var);
       if a_var(i) ne ""  then do;
         ae1=a_var(i);
         output;
       end;
     end;
   end;
   else do;
     output;
   end;
run;



最終更新:2008年10月13日 00:06
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。