推 hikaru1224: 可以啦,非常感謝 08/30 11:28
※ 引述《hikaru1224 (WinMoney)》之銘言:
: [軟體程式類別]:
: SAS
: [程式問題]:
: 資料已經整理好,但卡在資料的轉置和加總
: 有使用transpose轉置,但無法試出我想要的呈現方式
: [軟體熟悉度]:
: 新手
: [問題敘述]:
: 我的資料格式如下
: id type size value
: 1 A S 10
: 1 A L 20
: 1 B S 30
: 1 B L 10
: 想要的呈現方式如下
: id type S L
: 1 A 10 20
: 1 B 30 10
: 40 30 (多一欄垂直加總)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.223.193.138
※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1440856205.A.8B7.html
DATA test;
Input newid id type$ size$ value;
cards;
1 1 A S 10
2 1 A L 20
3 1 B S 30
4 1 B L 10
RUN;
/*在PROC TRANSPOSE 之前要給每個obs一個不重複的newID
如果資料檔已經存在可以在data step下 newID+1 就可以了*/
DATA test_1 test_2;
SET test;
IF size="S" then output test_1;
ELSE IF size="L" then output test_2;
RUN;
PROC TRANSPOSE data=test_1 out=test_11;
VAR value;
COPY id type;
By newid;
RUN;
PROC TRANSPOSE data=test_2 out=test_21;
VAR value;
COPY id type;
By newid;
RUN;
DATA test_all;
Merge test_11(rename=(COL1=S)) test_21(rename=(COL1=L));
by ID;
Drop _NAME_ newID;
RUN;
PROC print data=test_all;
sum S L;
RUN;