SAS TRANSPOSE

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

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

今回もTRANSPOSEについて解説します。

前回は縦持ち⇒横持ちにする流れで解説してきました。

今回は横持ち ⇒ 縦持ちの流れに沿って解説していきたいと思います。

前回のコードを流用して縦⇒横持ちにした後、もう一度transposeを噛ませることで横⇒縦持ちにしていきます。


/* 正常形 */
data data1;
  NO="A"; MONTH="aaaa"; MOJI="AAAA";
    output;
  NO="A"; MONTH="bbbb"; MOJI="BBBB";
    output;
  NO="A"; MONTH="cccc"; MOJI="CCCC";
    output;
  NO="B"; MONTH="dddd"; MOJI="DDDD";
    output;
  NO="B"; MONTH="eeee"; MOJI="EEEE";
    output;
  NO="B"; MONTH="ffff"; MOJI="FFFF";
    output;
run;

proc transpose data=data1 out=data2; var MOJI; by NO; id MONTH; run;


proc transpose data=data2 out=data3; var aaaa bbbb cccc dddd eeee ffff; by NO; run;

  • transposeにより、縦持ち横持ちを入れ替えることができる。
  • 今回は、横持ちのMOJIをNOごとに縦持ちにしている。
  • varにより、置換する列を指定できる。
  • byにより、グループ単位を指定できる。(A, B)

/* varなし byなし1 */
data data1;
  NO="A"; MONTH="aaaa"; MOJI="AAAA";
    output;
  NO="A"; MONTH="bbbb"; MOJI="BBBB";
    output;
  NO="A"; MONTH="cccc"; MOJI="CCCC";
    output;
  NO="B"; MONTH="dddd"; MOJI="DDDD";
    output;
  NO="B"; MONTH="eeee"; MOJI="EEEE";
    output;
  NO="B"; MONTH="ffff"; MOJI="FFFF";
    output;
run;

proc transpose data=data1 out=data2; var MOJI; by NO; id MONTH; run;


proc transpose data=data2 out=data3; run;


  • transposeにより、縦持ち横持ちを入れ替えることができる。
  • 横⇒縦持ち時にvarが無いため、文字型は置換されない(?)
  • byが無いと、_NAME_で同じ値が2回出現した時にエラーとなる(?)

/* varなし byなし2 */
data data1;
  NO="A"; MONTH="aaaa"; MOJI="AAAA";
    output;
  NO="A"; MONTH="bbbb"; MOJI="BBBB";
    output;
  NO="A"; MONTH="cccc"; MOJI="CCCC";
    output;
run;

proc transpose data=data1 out=data2; var MOJI; by NO; id MONTH; run;


proc transpose data=data2 out=data3; run;

  • transposeにより、縦持ち横持ちを入れ替えることができる。
  • 横⇒縦持ち時にvarが無いため、文字型は置換されない(?)

/* byなし */
data data1;
  NO="A"; MONTH="aaaa"; MOJI="AAAA";
    output;
  NO="A"; MONTH="bbbb"; MOJI="BBBB";
    output;
  NO="A"; MONTH="cccc"; MOJI="CCCC";
    output;
  NO="B"; MONTH="dddd"; MOJI="DDDD";
    output;
  NO="B"; MONTH="eeee"; MOJI="EEEE";
    output;
  NO="B"; MONTH="ffff"; MOJI="FFFF";
    output;
run;

proc transpose data=data1 out=data2; var MOJI; by NO; id MONTH; run;


proc transpose data=data2 out=data3; var aaaa bbbb cccc dddd eeee ffff; run;

  • transposeにより、縦持ち横持ちを入れ替えることができる。
  • varにより、置換する列を指定できる。
  • byが無いと、_NAME_で同じ値が2回出現した時にエラーとなる(?)

/* byなし2 */
data data1;
  NO="A"; MONTH="aaaa"; MOJI="AAAA";
    output;
  NO="A"; MONTH="bbbb"; MOJI="BBBB";
    output;
  NO="A"; MONTH="cccc"; MOJI="CCCC";
    output;
run;

proc transpose data=data1 out=data2; var MOJI; by NO; id MONTH; run;


proc transpose data=data2 out=data3; var aaaa bbbb cccc; run;

  • transposeにより、縦持ち横持ちを入れ替えることができる。
  • 今回は、横持ちのMOJIをNOごとに縦持ちにしている。
  • varにより、置換する列を指定できる。
  • byが無いくても、_NAME_で1回出現しただけならエラーにならない(?)

/* byのみ */
data data1;
  NO="A"; MONTH="aaaa"; MOJI="AAAA";
    output;
  NO="A"; MONTH="bbbb"; MOJI="BBBB";
    output;
  NO="A"; MONTH="cccc"; MOJI="CCCC";
    output;
  NO="B"; MONTH="dddd"; MOJI="DDDD";
    output;
  NO="B"; MONTH="eeee"; MOJI="EEEE";
    output;
  NO="B"; MONTH="ffff"; MOJI="FFFF";
    output;
run;

proc transpose data=data1 out=data2; var MOJI; by NO; id MONTH; run;


proc transpose data=data2 out=data3; by NO; run;

  • transposeにより、縦持ち横持ちを入れ替えることができる。
  • 横⇒縦持ち時にvarが無いため、文字型は置換されない(?)

-SAS, TRANSPOSE

執筆者:


comment

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

関連記事

【SAS】TRANSTRN関数は指定した文字を別の文字に変換する。その2 再帰的使用

今回はTRANSTRN関数の再帰的使用について解説していきます。 (参考:【SAS】TRANSTRN関数は指定した文字を別の文字に変換する。 | ビジネスイッチ (how-to-business.co …

【SAS】”dはDATE9形式(ddMONyyyy)をSAS日付に変換する。

”dについては、過去の記事でも触れています。 【SAS】SASで日付を扱う(年月日)【”d】 【YEAR()】【MONTH()】【DAY()】【MDY()】 | ビジネスイッチ (how- …

【SAS】SASで良く使うテクニック。その10 「矩形選択」~インデントを入れたい時など~【サクラエディタ】

今回はSASで良く使うテクニックということで、ソースコードにインデントを挿入したい時は、「矩形選択」が役に立つ理由を解説していきます。 「矩形選択」は、インデントの挿入以外にも、同じ文字数分削除をした …

【SAS】データセットをエクセルファイルとしてエクスポート(出力)する

今回はデータセットをエクセルファイルとしてエクスポートする方法について解説します。 data data1; id1=”1111″; id2=”1111″; id3=”1111″; output; id …

【SAS】PUTLOGステートメントは文字列をログに出力する。

今回はPUTLOGについて解説します。 /* putlog_1 */ data _null_; putlog ‘2022/03/26’; run; putlogにより、ログに文字列を出力できる。%pu …