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】%PUTステートメントは文字列をログに出力する。その1

今回は%PUTについて解説します。 /* %put */ %put CHAR; %putにより、文字列をログに出力できる。 /* %let */ %let CHAR = aaaa ; %put &am …

【SAS】%MACROはマクロを定義することができる。【%MEND】

今回はマクロについて解説していきたいと思います。 %macro data1; data data1 ; id1=”1111″; id2=”1111″; id3=”1111″; output; id1= …

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

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

【SAS】”nは本来使用できない文字を使用可能にする。

今回は”nについて解説します。(参考:Solved: what the ”  ‘n ” means? – SAS Support Commu …

【SAS】TIME関数はSAS時間値を取得する。

今回はTIME関数について解説します。 /* time_1 */ data data1; Id1 = time(); run; time()により、SAS時間値を取得する。 /* time_2 */ …