2

以下の2つのデータセットがあります

データセット A

id age  mark
1  .    .
2  .    .
1  .    .

データセット B

id age mark
2  20  200
1  10  100

出力として以下のデータセットが必要です

出力データセット

id age mark
1  10  100
2  20  200
1  10  100

PROC SQLを使用せずにこれを実行する方法、つまりDATA STEPを使用する方法は?

4

2 に答える 2

3

これを行うには多くの方法があります。最も簡単な方法は、2 つのデータ セットを並べ替えてから を使用することMERGEです。例えば:

proc sort data=A;
   by id;
run;
proc sort data=B;
   by id;
run;

data WANT;
  merge A(drop=age mark) B;
     by ID;
run;

秘訣は、追加する変数を最初のデータ セットから削除Aすることです。新しい変数は 2 番目のデータ セットから取得されBます。

もちろん、このソリューションは、データセット内の観測の元の順序を保持せず、2 番目のデータセットに の一意の値が含まれているためにのみ機能しますid

于 2013-01-22T17:12:04.920 に答える
0

その列に保存したいデータがある場合でも、これを試してみましたが、うまくいきました。完全を期すために、SQL バリアントも追加しました。

data a;
input id a;
datalines;
1 10
2 20
;

data b;
input id a;
datalines;
1 .
1 5
1 .
2 .
3 4
;

data c (drop=b);
merge a (rename = (a=b) in=ina) b (in = inb);
by id;
if b ne . then a = b;
run;

proc sql;
create table d as
select a.id, a.a from a right  join b on a.id=b.id where a.id is not null
union all
select b.id, b.a from a right join b on a.id = b.id where a.id is null
;
quit;
于 2013-01-23T09:51:52.517 に答える