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

时间:2019-01-08 17:19:28

标签: sas transpose

我有一个要转置的摘要表,但是我无法理解。列应该是行,列应该是值。

有关表格的一些说明。每列代表一年。人们可以分为3个组:A,B或C。2016年,每个人(100)都属于A组。2017年,A组中的35人(5 + 20 + 10),B组中的15人和C组中的50人。 / p>

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个不同的组)。请找到我想要的表格示例:

Image of table want

我尝试了不同的方法,但是我无法获得想要的东西。

1 个答案:

答案 0 :(得分: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;

enter image description here