今回はTRANSPOSEについて解説します。
/* num char char */
data data1;
NO=1111; CHAR="A"; MOJI="AAAA";
output;
NO=2222; CHAR="B"; MOJI="BBBB";
output;
NO=3333; CHAR="C"; MOJI="CCCC";
output;
NO=4444; CHAR="D"; MOJI="DDDD";
output;
NO=5555; CHAR="E"; MOJI="EEEE";
output;
NO=6666; CHAR="F"; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNOを横持ちにしている。
- 変数名NOは_NAME_,各値はCOL1,COL2…になる。
- varが無いと、数値型の列で縦横の置換が起こる。
/* char num char */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのCHARを横持ちにしている。
- 変数名CHARは_NAME_,各値はCOL1,COL2…になる。
- varが無いと、数値型の列で縦横の置換が起こる。
/* num num char */
data data1;
NO=1111; CHAR=1111; MOJI="AAAA";
output;
NO=2222; CHAR=2222; MOJI="BBBB";
output;
NO=3333; CHAR=3333; MOJI="CCCC";
output;
NO=4444; CHAR=4444; MOJI="DDDD";
output;
NO=5555; CHAR=5555; MOJI="EEEE";
output;
NO=6666; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNO,CHARを横持ちにしている。
- 変数名NO,CHARは_NAME_,各値はCOL1,COL2…になる。
- varが無いと、数値型の列で縦横の置換が起こる。
/* num char char var有 */
data data1;
NO=1111; CHAR="A"; MOJI="AAAA";
output;
NO=2222; CHAR="B"; MOJI="BBBB";
output;
NO=3333; CHAR="C"; MOJI="CCCC";
output;
NO=4444; CHAR="D"; MOJI="DDDD";
output;
NO=5555; CHAR="E"; MOJI="EEEE";
output;
NO=6666; CHAR="F"; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var NO; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNOを横持ちにしている。
- 変数名NOは_NAME_,各値はCOL1,COL2…になる。
- varにより置換する列を指定できる。
/* char num char var有 */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var NO; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNOを横持ちにしている。
- 変数名NOは_NAME_,各値はCOL1,COL2…になる。
- varにより置換する列を指定できる。
- varには文字型の変数も指定できる。
/* num num char var有 */
data data1;
NO=1111; CHAR=1111; MOJI="AAAA";
output;
NO=2222; CHAR=2222; MOJI="BBBB";
output;
NO=3333; CHAR=3333; MOJI="CCCC";
output;
NO=4444; CHAR=4444; MOJI="DDDD";
output;
NO=5555; CHAR=5555; MOJI="EEEE";
output;
NO=6666; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var NO; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNOを横持ちにしている。
- 変数名NOは_NAME_,各値はCOL1,COL2…になる。
- varにより置換する列を指定できる。
- varには数値型の変数も指定できる。
/* var複数 */
data data1;
NO=1111; CHAR="A"; MOJI="AAAA";
output;
NO=2222; CHAR="B"; MOJI="BBBB";
output;
NO=3333; CHAR="C"; MOJI="CCCC";
output;
NO=4444; CHAR="D"; MOJI="DDDD";
output;
NO=5555; CHAR="E"; MOJI="EEEE";
output;
NO=6666; CHAR="F"; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var NO CHAR MOJI; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNO,CHAR,MOJIを横持ちにしている。
- 変数名NO,CHAR,MOJIは_NAME_,各値はCOL1,COL2…になる。
- varにより置換する列を指定できる。
- varには複数の変数も指定できる。
/* var by */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var MOJI; by NO; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのMOJIをNOごとに横持ちにしている。
- 変数名MOJIは_NAME_,各値はCOL1,COL2…になる。
- varにより置換する列を指定できる。
- byにより、グループ単位を指定できる。(A,B)
/* by var */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; by NO; var MOJI; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのMOJIをNOごとに横持ちにしている。
- 変数名MOJIは_NAME_,各値はCOL1,COL2…になる。
- varにより置換する列を指定できる。
- byにより、グループ単位を指定できる。(A,B)
- varとbyを入れ替えても実行できる。
/* by 数値型 */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var NO; by CHAR; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNOをCHARごとに横持ちにしている。
- 変数名NOは_NAME_,値はCOL1になる。
- varにより置換する列を指定できる。
- byにより、グループ単位を指定できる。(1111, 2222…)
- byには数値型の変数も指定できる。
/* varとbyで同じ変数 */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var NO; by NO; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNOをNOごとに横持ちにしている。
- 変数名NOは_NAME_,各値はCOL1,COL2…になる。
- varにより置換する列を指定できる。
- byにより、グループ単位を指定できる。(A,B)
- varとbyで同じ変数を指定しても、置換できる。
/* byのみ */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; by NO; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのCHARをNOごとに横持ちにしている。
- 変数名CHARは_NAME_,各値はCOL1,COL2…になる。
- 数値型の列で縦横の置換が起こる。
- byにより、グループ単位を指定できる。(A,B)
- byだけで、varが無くても置換はされる。
/* by 数値型 */
data data1;
NO="A"; CHAR=1111; MOJI="AAAA";
output;
NO="A"; CHAR=2222; MOJI="BBBB";
output;
NO="A"; CHAR=3333; MOJI="CCCC";
output;
NO="B"; CHAR=4444; MOJI="DDDD";
output;
NO="B"; CHAR=5555; MOJI="EEEE";
output;
NO="B"; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; by CHAR; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 今回は、置換はされていない。
- byにより、グループ単位を指定できる。(1111,2222…)
- 数値型の列がbyで指定されているため、varが無い限りは、置換されない。
/* id */
data data1;
NO=1111; CHAR=1111; MOJI="AAAA";
output;
NO=2222; CHAR=2222; MOJI="BBBB";
output;
NO=3333; CHAR=3333; MOJI="CCCC";
output;
NO=4444; CHAR=4444; MOJI="DDDD";
output;
NO=5555; CHAR=5555; MOJI="EEEE";
output;
NO=6666; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; var MOJI; by NO; id CHAR; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのMOJIをNOごとに横持ちにしている。
- 変数名MOJIは_NAME_,各値は1111,2222…になる。
- varにより、置換する列を指定できる。
- byにより、グループ単位を指定できる。(1111,2222…)
- idにより、横持ちの際にさらにグループ分けできる。
/* idのみ */
data data1;
NO=1111; CHAR=1111; MOJI="AAAA";
output;
NO=2222; CHAR=2222; MOJI="BBBB";
output;
NO=3333; CHAR=3333; MOJI="CCCC";
output;
NO=4444; CHAR=4444; MOJI="DDDD";
output;
NO=5555; CHAR=5555; MOJI="EEEE";
output;
NO=6666; CHAR=6666; MOJI="FFFF";
output;
run;
proc transpose data=data1 out=data2; id CHAR; run;
- TRANSPOSEにより、縦横を入れ替えることができる。
- 縦持ちのNOを横持ちにしている。
- 数値型の列(NO)で縦横の置換が起こる。
- idだけで、varが無くても置換はされる。
- 数値型の列(CHAR)がidで指定されているため、残った数値型の列(NO)で置換される。