複数のSASデータセットにある複数のオブザベーションを1つのオブザベーションに結合します。
該当要素: | DATAステップ |
カテゴリ: | ファイル操作 |
種類: | 実行 |
注: | MERGEステートメントを使用して読み込まれた変数はPDVで保持されます。詳細については、XisError: No pubcode in link data found for lrconおよびRETAINステートメントを参照してください。 |
オブザベーションを読み込む既存のSASデータセットを少なくとも2つ指定します。データセットは個別に指定するか、データセットのリストで指定します。また、両方を組み合わせても指定できます。
ヒント | データセット名を使用するかわりに、オペレーティングシステムでサポートされている構文を使用してファイルの物理パス名を指定することができます。物理パス名は一重引用符または二重引用符で囲む必要があります。 |
追加するSASデータセットを指定できます。 | |
参照項目 | MERGEステートメントでデータセットリストを使用する |
SASデータセット名の後ろに、1つまたは複数のSASデータセットオプションを丸かっこで囲んで指定します。
注 | データセットオプションは、処理対象のオブザベーションをDATAステップに読み込むときに実行するアクションを指定します。データセットオプションのリストについては、次を参照してください。 SASデータセットオプション: リファレンス |
ヒント | データセットリストに適用するデータセットオプションは、データセットリストに存在するすべてのデータセットに適用されます。 |
作成する一時変数の名前を指定します。この変数の値には終端指示子が格納されます。
注 | この変数は0に初期化されますが、MERGEステートメントが最後のオブザベーションを処理するときに1に設定されます。各入力データセットに存在するオブザベーションの数が異なる場合は、MERGEステートメントによってすべてのデータセットの最後のオブザベーションが処理されるときに、END=変数が1に設定されます。 |
ヒント | END=変数は、作成されるSASデータセットには追加されません。 |
merge SALES1:;
と指定すると、"SALES1"で始まるSALES1、SALES10、SALES11、SALES12などのデータセットがすべてマージされます。
sales1 sales2 sales3 sales4 sales1-sales4
merge cost1-cost4 cost11-cost14 cost21-cost24;
merge cost1-cost4 cost2: cost33-37;
merge cost1 cost10-cost20 cost30;
/* these two lines are the same */ merge sales1-sales4; merge 'sales1'n-'sales4'n;
/* blanks in these statements will cause errors */ merge sales 1-sales 4; merge 'sales 1'n - 'sales 4'n; /* trailing blanks in this statement will be ignored */ merge 'sales1'n - 'sales4'n;
/* this suffix will cause an error */ merge prod2000000000-prod2934850239;
/* physical pathnames will cause an error */ %let work_path = %sysfunc(pathname(WORK)); merge "&work_path\dept.sas7bdat"-"&work_path\emp.sas7bdat" ;
data benefits.qtr1; merge benefits.jan benefits.feb; run;
data inventry; merge stock orders; by partnum; run;
data d008; job=3; emp=19; run; data d009; job=3; sal=50; run; data d010; job=4; emp=97; run; data d011; job=4; sal=15; run; data comb; merge d008-d011; by job; run; proc print data=comb; run;