Sas 将数据集中的一列按年份和另一列进行转换

Sas 将数据集中的一列按年份和另一列进行转换,sas,Sas,我这里有一个数据集,如下所示: 基本上,我想操纵数据集,以便 GVKEY1是唯一的,如1004,然后是唯一的年份号,如1996,然后是几个GVKEY1。然而,每年gvkey2的数量并不相同。有人知道如何避开这个问题吗?这意味着,从1996年到2008年,我将拥有1004年gvkey1的12行数据。然后每年我都会有很多专栏,每个专栏都会有一个gvkey2 致以最良好的祝愿 Naz我不确定是否理解您的问题,但如果您正在寻找独特的gvkey1/年配对,您可以执行以下任一操作: proc sql;

我这里有一个数据集,如下所示:

基本上,我想操纵数据集,以便 GVKEY1是唯一的,如1004,然后是唯一的年份号,如1996,然后是几个GVKEY1。然而,每年gvkey2的数量并不相同。有人知道如何避开这个问题吗?这意味着,从1996年到2008年,我将拥有1004年gvkey1的12行数据。然后每年我都会有很多专栏,每个专栏都会有一个gvkey2

致以最良好的祝愿


Naz

我不确定是否理解您的问题,但如果您正在寻找独特的gvkey1/年配对,您可以执行以下任一操作:

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


如果这不是您想要的结果,我建议发布一个您想要的结果示例。

我不确定我是否理解您的问题,但如果您想要独特的gvkey1/年配对,您可以执行以下任一操作:

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


如果这不是你想要的,我建议你发布一个你想要的结果的例子。

你能不能不使用PROC转置

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。对不同的变量名使用前缀选项。

您不能只使用PROC转置吗

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。对不同的变量名使用前缀选项。

我认为您需要在proc转置中添加'year'作为BY变量。否则,这似乎是最简单的解决方案。我认为您需要在proc转置中添加'year'作为一个BY变量。否则,这似乎是最简单的解决方案。