SAS SET

【SAS】SETステートメントに複数データセットを設定すると縦結合できる

投稿日:2021年11月7日 更新日:

今回はSETについて解説します。


/* 1~7 */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id1=5555; Char1="EEEE";
    output;
  Id1=6666; Char1="FFFF";
    output;
  Id1=7777; Char1="GGGG";
    output;
run;


data data3;
  set data1 data2;
run;

  • SETステートメントに複数データセットを設定すると縦に結合する。

/* 1~4 1~4 */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data3;
  set data1 data2;
run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • 一致する値が有っても機械的に縦に結合する。(mergeではない点に注意)

/* char1 char2 */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id1=5555; Char2="EEEE";
    output;
  Id1=6666; Char2="FFFF";
    output;
  Id1=7777; Char2="GGGG";
    output;
run;


data data3;
  set data1 data2;
run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • 片方のテーブルにしか存在しない変数は両方採用される。

/* Id1 Char1 Id2 Char2 */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id2=5555; Char2="EEEE";
    output;
  Id2=6666; Char2="FFFF";
    output;
  Id2=7777; Char2="GGGG";
    output;
run;


data WORK.data3;
  set data1 data2;
run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • 片方のテーブルにしか存在しない変数は両方採用される。

/* 1~7 by */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id1=5555; Char1="EEEE";
    output;
  Id1=6666; Char1="FFFF";
    output;
  Id1=7777; Char1="GGGG";
    output;
run;



  data WORK.data3;
     set data1 data2;
     by Id1;
  run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • byに指定した変数に従ってレコードを並び替える。

/* 1~4 1~4 by */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


  data WORK.data3;
     set data1 data2;
     by Id1;
  run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • 一致する値が有っても縦に結合する。(mergeではない点に注意)
  • byに指定した変数に従ってレコードを並び替える。

/* char1 char2 by */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id1=5555; Char2="EEEE";
    output;
  Id1=6666; Char2="FFFF";
    output;
  Id1=7777; Char2="GGGG";
    output;
run;



  data WORK.data3;
     set data1 data2;
     by Id1;
  run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • 片方のテーブルにしか存在しない変数は両方採用される。
  • byに指定した変数に従ってレコードを並び替える。

/* Id1 Char1 Id2 Char2 by */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id2=5555; Char2="EEEE";
    output;
  Id2=6666; Char2="FFFF";
    output;
  Id2=7777; Char2="GGGG";
    output;
run;


  data WORK.data3;
     set data1 data2;
     by Id1;
  run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • 片方のテーブルにしか存在しない変数は両方採用される。
  • byに指定した変数に従ってレコードを並び替える。
  • byに指定した変数が入力データセットに存在しないとエラーとなる。

/*型違い*/
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;

data data2;
  Id1="eeee"; Char1="EEEE";
    output;
  Id1="ffff"; Char1="FFFF";
    output;
  Id1="gggg"; Char1="GGGG";
    output;
run;


data data3;
  set data1 data2;
run;

  • SETステートメントに複数データセットを設定すると縦に結合する。
  • 同じ名前の変数が型違いで入力データセットに含まれているとエラーとなる。

-SAS, SET

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】SQLにおける複数テーブルの結合 その2【INNER JOIN】

今回も複数テーブルの結合について解説します。 前回の記事、【SAS】SQLにおける複数テーブルの結合 その1【UNION ALL】 | ビジネスイッチ (how-to-business.com)の続き …

【SAS】%MACROはマクロを定義することができる。その3 マクロには引数を設定できる。【%MEND】

今回はマクロに引数を設定する方法について解説していきたいと思います。(事前に読んでおきたい記事:【SAS】%MACROはマクロを定義することができる。【%MEND】 | ビジネスイッチ (how-to …

【SAS】INTCK関数を使って年齢計算をする。【PUT】【SUBSTR】【IF】

今回はINTCK関数を使って、年齢計算を行う方法について解説していきたいと思います。 併わせて読みたい記事 (INTCK:【SAS】INTCK関数は指定された区間に指定された単位を何回跨ぐか数える。 …

【SAS】TRANSPOSEは縦持ち、横持ちを変換できる。その2

今回もTRANSPOSEについて解説します。 前回は縦持ち⇒横持ちにする流れで解説してきました。 【SAS】TRANSPOSEは縦持ち、横持ちを変換できる。その1 今回は横持ち ⇒ 縦持ちの流れに沿っ …

【SAS】PROC PRINTTO LOGはログをファイルとして出力する。【NEW】

今回はPROC PRINTTO LOGについて解説します。 /* log_1 */ proc printto log = “/home/xxxxxxxxxx/sasuser.log” new; run …