SAS将列转换为行,将值转换为列

SAS将列转换为行,将值转换为列,sas,transpose,Sas,Transpose,我有一个汇总表,我想转置一下,但我的脑子不好使。列应该是行,列是值 关于桌子的一些解释。每列代表一年。人可以分为3组:A、B或C。2016年,每个人(100人)都在A组。2017年,35人在A组(5+20+10),15人在B组,50人在C组 DATA have; INPUT year2016 $ year2017 $ year2018 $ count; DATALINES; A A A 5 A A B 20 A A C 10 A B C 15 A C A 50 ; RUN

我有一个汇总表,我想转置一下,但我的脑子不好使。列应该是行,列是值

关于桌子的一些解释。每列代表一年。人可以分为3组:A、B或C。2016年,每个人(100人)都在A组。2017年,35人在A组(5+20+10),15人在B组,50人在C组

DATA have;
    INPUT year2016 $ year2017 $ year2018 $ count;
    DATALINES;
A A A 5
A A B 20
A A C 10
A B C 15
A C A 50
    ;
RUN;
我希望能够绘制一张很好的图表,展示不同时期群体的演变。因此,我想以一个表结束,其中列是行(=period),列是值(=3个不同的组)。请找到我想要的表格的示例:


我尝试过不同的方法,但我无法得到我想要的。

也许是更直接的方法,但我可能会这样做

DATA have;
    INPUT year2016 $ year2017 $ year2018 $ count;
    id + 1;
    DATALINES;
A A A 5
A A B 20
A A C 10
A B C 15
A C A 50
;
   RUN;
proc print;
proc transpose data=have out=want1 name=period;
   by id count notsorted;
   var year:;
   run;
proc print;
   run;
proc summary data=want1 nway completetypes;
   class period col1;
   freq count;
   output out=want2(drop=_type_);
   run;
proc print;
   run;
proc transpose data=want2 out=want(drop=_name_) prefix=Group_;
   by period;
   var _freq_;
   id col1;
   run;
proc print;
   run;

也许是更直接的方法,但我可能会这样做

DATA have;
    INPUT year2016 $ year2017 $ year2018 $ count;
    id + 1;
    DATALINES;
A A A 5
A A B 20
A A C 10
A B C 15
A C A 50
;
   RUN;
proc print;
proc transpose data=have out=want1 name=period;
   by id count notsorted;
   var year:;
   run;
proc print;
   run;
proc summary data=want1 nway completetypes;
   class period col1;
   freq count;
   output out=want2(drop=_type_);
   run;
proc print;
   run;
proc transpose data=want2 out=want(drop=_name_) prefix=Group_;
   by period;
   var _freq_;
   id col1;
   run;
proc print;
   run;

请展示您所尝试的,proc转置应该可以正常工作。实际上,你可能想要这样的东西…请展示你已经尝试过的,proc转置应该可以正常工作。实际上,你可能想要这样的东西。。。