Sas-concatenate-data-sets
SAS-データセットの連結
理想的には、すべての結合データセットに同じ変数がありますが、変数の数が異なる場合、結果にはすべての変数が表示され、より小さいデータセットの欠損値があります。
構文
SASのSETステートメントの基本的な構文は次のとおりです-
以下は、使用されるパラメータの説明です-
- data-set1、data-set2 は、次々に書き込まれるデータセット名です。
例
IT部門用と非IT部門用の2つの異なるデータセットで利用可能な組織の従業員データを考えてみましょう。 すべての従業員の完全な詳細を取得するために、以下に示すSETステートメントを使用して両方のデータセットを連結します。
上記のコードが実行されると、次の出力が得られます。
シナリオ
連結するデータセットに多くのバリエーションがある場合、変数の結果は異なる可能性がありますが、連結されたデータセットの観測値の合計数は常に各データセットの観測値の合計になります。 このバリエーションに関する多くのシナリオを以下で検討します。
異なる数の変数
元のデータセットの1つが他のデータセットよりも多くの変数を持っている場合、データセットは依然として結合されますが、小さいデータセットではこれらの変数は欠落しているように見えます。
例
以下の例では、最初のデータセットにDOJという名前の追加変数があります。 結果では、2番目のデータセットのDOJの値が欠落しているように見えます。
上記のコードが実行されると、次の出力が得られます。
異なる変数名
このシナリオでは、データセットの変数の数は同じですが、変数名は変数間で異なります。 その場合、通常の連結により結果セット内のすべての変数が生成され、異なる2つの変数の結果が欠落します。 元のデータセットの変数名を変更することはできませんが、作成した連結データセットにRENAME関数を適用できます。 通常の連結と同じ結果が得られますが、もちろん元のデータセットに存在する2つの異なる変数名の代わりに1つの新しい変数名が使用されます。
例
以下の例では、データセットITDEPTの変数名は ename で、データセット NON_ITDEPT の変数名は* empname。ですが、これらの変数は両方とも同じタイプ(文字)を表しています。 以下に示すように、SETステートメントで *RENAME 関数を適用します。
上記のコードが実行されると、次の出力が得られます。
異なる可変長
2つのデータセットの変数の長さが異なる場合、連結されたデータセットの値は、長さが短い変数の一部のデータが切り捨てられます。 最初のデータセットの長さが短い場合に発生します。 これを解決するために、以下に示すように、両方のデータセットにより長い長さを適用します。
例
以下の例では、変数 ename の長さは、最初のデータセットでは5、2番目では7です。 連結する場合、連結されたデータセットにLENGTHステートメントを適用して、enameの長さを7に設定します。
上記のコードが実行されると、次の出力が得られます。