「M×Nのデータ結合」の編集履歴(バックアップ)一覧はこちら
「M×Nのデータ結合」(2008/10/13 (月) 00:06:06) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
・N×Mのマッチマージ
【問題】data1、data2からdata3を作成する。
#image(http://www39.atwiki.jp/sas_help/?cmd=upload&act=open&page=%E5%8F%82%E7%85%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E4%B8%80%E8%A6%A7&file=logic1.JPG)
#highlight(sas){
/*---------------*
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;}
#hr(height=1,color=#002bb8)
・N×Mのマッチマージ
【問題】data1、data2からdata3を作成する。
#image(http://www39.atwiki.jp/sas_help?cmd=upload&act=open&pageid=19&file=logic1.JPG)
#highlight(sas){
/*---------------*
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;}
#hr(height=1,color=#002bb8)