SASの履歴ファイルを更新したい。私は、既存のデータラインと重複するかもしれない新たな観測を持っています。条件付きでマージを出力する
必要なものは、データセット(new_data)の存在する行と存在しない場合は古いセット(old_data)からの行を持つファイルです。私が思いついたのは、データセットの順番に条件付きの、厄介なマージ操作です。 (== NEW_DATAがOLD_DATAの後である場合にのみ機能します:。?)
data new_data;
input key value;
datalines;
1 10
1 11
2 20
2 21
;
run;
data old_data;
input key value;
datalines;
2 50
2 51
3 30
3 31
;
run;
だから私は、次のことをしたいのです:
key value
1 10
1 11
2 20
2 21
3 30
3 31
以下は動作しませんが。その下に出力が生成されます。
data updated_history;
merge old_data(in=b) New_data(in=a);
by key;
if a or (b and not a);
run;
質問:
data updated_history;
merge New_data(in=a) old_data(in=b) ;
by key;
if a or (b and not a);
run;
....
2 50
2 51
...
しかし、これがない何らかの理由で
管理するインテリジェントな方法がありますが、そこから値がから選択されているデータセット。何かのように:if then value_from_dataset a;
サンプル入力ファイルには、キー値ごとに複数の観測値があります。単純な例では、共有キーは各ファイル内の観測数と同じ数になります。しかし、観測数が一致しない場合は、MERGEを使用して必要なことをするのに問題があります。 – Tom