SAS-データセットのマージ
特定の共通変数に基づいて複数のSASデータセットをマージして、単一のデータセットを提供できます。 これは、 MERGE ステートメントと BY ステートメントを使用して行われます。 多くの場合、マージされたデータセットの観測値の総数は、元のデータセットの観測値の総数よりも少なくなります。 これは、共通変数の値に一致がある場合に、両方のデータセットの変数が1つのレコードとしてマージされるためです。
以下に示すデータセットをマージするための2つの前提条件があります-
- 入力データセットには、マージする少なくとも1つの共通変数が必要です。
- 入力データセットは、マージに使用される共通変数でソートする必要があります。
構文
SASのMERGEおよびBYステートメントの基本的な構文は次のとおりです-
以下は、使用されるパラメータの説明です-
- Data-set1、Data-set2 は、次々と書き込まれるデータセット名です。
- *共通変数*は、データセットがマージされる一致値に基づいた変数です。
データのマージ
例の助けを借りて、データのマージを理解しましょう。
例
2つのSASデータセットについて考えます。1つには名前と給与の従業員IDが含まれ、もう1つには従業員IDと部門の従業員IDが含まれます。 この場合、各従業員の完全な情報を取得するために、これら2つのデータセットをマージできます。 最終的なデータセットには、従業員ごとに1つの観測値が含まれますが、給与と部門の両方の変数が含まれます。
上記の結果は、BYステートメントで共通変数(ID)が使用されている次のコードを使用して実現されます。 両方のデータセットの観測値はすでにID列でソートされていることに注意してください。
一致する列の欠損値
共通変数の一部の値がデータセット間で一致しない場合があります。 そのような場合でも、データセットはマージされますが、結果に欠損値が含まれます。
例
一致のみをマージする
結果の欠損値を回避するために、共通変数の値が一致した観測のみを保持することを検討できます。 これは、 IN ステートメントを使用して実現されます。 SASプログラムのマージステートメントを変更する必要があります。
例
次の例では、* IN * =値は、データセット SALARY と DEPT の両方の値が一致する観測のみを保持します。
上記の変更された部分で上記のSASプログラムを実行すると、次の出力が得られます。