在数据集中转置一列但按年和另一列转置

时间:2012-05-20 13:45:44

标签: sas

enter image description here我这里有这个数据集,如下所示:

基本上我想操纵数据集以便我拥有 GVKEY1作为唯一的如1004然后是一个独特的年份编号,例如1996年之后的几个gvkey2。但是每年gvkey2的数量是不一样的。有谁知道如何解决这个问题?这意味着我将拥有10个gvkey1的12行数据,因为我有从1996年到2008年的年份。然后每年我会有很多列,每列都有一个gvkey2。

最诚挚的问候,

纳兹

2 个答案:

答案 0 :(得分:3)

你能不能只使用PROC TRANSPOSE?

proc sort data=your_data_set out=temp1;
  by gvkey1 year;
run;

proc transpose data=temp1 out=temp2;
  by gvkey1 year;
  var gvkey2;
run;

这将为您提供一系列变量COL1 - COLx。对不同的变量名称使用PREFIX选项。

答案 1 :(得分:0)

我不确定我是否理解你的问题,但如果你正在寻找独特的gvkey1 / year对,你可以做以下任何一种:

proc sql;
 create table results as
 select distinct gvkey1, year
 from _your_data_set;
quit;

proc sort data=_your_data_set(keep=gvkey1 year) out=results nodupkey;
 by gvkey1 year;
run;

如果那不是您要找的内容,我建议发布您想要的结果示例。