如何在SAS中创建数据透视表?

时间:2016-10-05 13:40:52

标签: sas

我在数据集中有三列:spendage_bucketmultiplier。数据看起来像......

spend   age_bucket  multiplier
10      18-24        2x
120     18-24        2x
1       35-54        3x

我想要一个数据集,其中列为年龄桶,行为乘数,条目为支出列的总和(或其他聚合函数)。有proc这样做吗?我可以使用proc SQL轻松完成吗?

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。

data have;
input spend   age_bucket $ multiplier $;
datalines;

10      18-24        2x
120     18-24        2x
1       35-54        3x
10      35-54        2x
;

proc summary data=have;
var spend;
class age_bucket multiplier;
output out=temp sum=;
run;

首先,您可以使用PROC SUMMARY来计算相关变量的聚合,在这种情况下求和。 CLASS语句为您提供了总结的东西。这将计算N路和,输出数据集将包含它们。运行代码并查看数据集temp

接下来,您可以使用PROC TRANSPOSE来旋转表格。我们需要使用BY语句,因此需要PROC SORT。我也会过滤你关心的聚合。

proc sort data=temp(where=(_type_=3));
by multiplier;
run;

proc transpose data=temp out=want(drop=_name_);
by multiplier;
var spend;
id age_bucket;
idlabel age_bucket;
run;

在传统模式下,35-54不是有效的SAS变量名。 SAS会将​​您的列转换为专有名称。变量上的标签将保留原始值。请注意,如果以后需要引用该变量,则名称已更改为有效。

enter image description here