首页 > 解决方案 > SAS 将列转置为行,将值转置为列

问题描述

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

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

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

想要的桌子图片

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

标签: sastranspose

解决方案


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

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;

在此处输入图像描述


推荐阅读