DATAステップの「SETステートメント」で複数のデータセットを縦に結合することができます。
DATA 出力データセット; SET データセット1 データセット2 ・・・; RUN; |
- 「SET」に結合したいデータセットを列挙
- 「DATA」に結合後に作成するデータセット名を指定
data DT1; input X Y:$2. Z; cards; 1 aa 10 2 bb 20 ; data DT2; input X Y:$1.; cards; 3 c 4 d ;
|
data OUT1; set DT1; run;
|
- SETに指定されたデータセットと同じ中身のデータセットが作成されます。
data OUT2; set DT1 DT2; run;
|
- SETに指定されたデータセットの順に縦結合されます。
- SETに指定されたデータセット間で
- 共通する変数名同士を縦に結合し
- 片方にしかない変数も残してくれます。
data OUT3; set DT2 DT1; run;
ログ WARNING: 入力データセットによって、変数Yに複数の長さが指定されています。 データの切り捨ての原因になります。 |
- なんかログに WARNING が出ちゃったし、
- 結合元の DT1 の1行目の Y が「aa」だったのが、結合後「a」になっちゃってる
- 結合元の DT1 の2行目の Y が「bb」だったのが、結合後「b」になっちゃってる
これは以下の重要な性質によるものです
- SETに指定された最初のデータセットの LENGTH が適用される
今回の例では、変数Y のLENGTHは
- DT2・・・「1」
- DT1・・・「2」
そして、SETに指定された最初のデータセットは「DT2」なので、結合後の 変数Y のLENGTHは「1」に設定されてしまい、文字切れが起きたというわけですね。
解決策
data OUT4; length Y $2.; set DT2 DT1; run;
|
- SETの前に「LENGTHステートメント」でLENGTHを再設定してあげればOK
0 件のコメント:
コメントを投稿