堆叠数据集

时间:2016-03-21 17:55:24

标签: sas data-manipulation

SAS中用于堆叠数据的代码程序是什么? 出于举例的目的,假设我有这个数据集:

DATA test.one;
INPUT Name $ Y1996 Y1997 Y1998 Y1999;
cards;
Dan 5 10 40 20
Derek 10 12 10 10
run;

proc print data = test.one;
run;

运行这个集合会给我一个这样的输出:

Name     Y1996   Y1997  Y1998  Y1999
Dan       5      10     40     20
Derek     10     12     10     10

但是,我希望我的数据看起来像这样:

Name   Year  Income
Dan    1996    5
Dan    1997    10
Dan    1998    40
Dan    1999    20
Derek  1996    10
Derek  1997    12
Derek  1998    10
Derek  1999    10

如上所示,它将创建与堆叠数据相对应的新变量收入。

2 个答案:

答案 0 :(得分:0)

您是否在询问如何直接将原始数据读入该表单?

DATA want;
   INPUT Name $ @;
   do year=1996 to 1999;
     input income @;
     output;
   end;
cards;
Dan 5 10 40 20
Derek 10 12 10 10
;

答案 1 :(得分:0)

PROC Transpose可以解决这个问题;

DATA test.one;
INPUT Name $ y1996 y1997 y1998 y1999;
cards;
Dan 5 10 40 20
Derek 10 12 10 10
run;

proc print data = test.one;
run;

proc transpose data=test.one out=long1;
by name;
run;

data test2;
set long1 (rename=(col1=Income));
RUN;

然后,它会将数据集转换为堆叠版本。