将行值放在具有相应名称的列中

时间:2013-04-22 14:28:51

标签: r match reshape

我需要以下列方式更改我的一些数据集。

我有一个面板数据集,其中包含唯一的公司ID作为标识符(id),观察年份(年份,2002-2012)以及一些具有相应年份值的公司变量(大小,营业额等)。看起来有点像:

[ID] [year] [size] [turnover] ...
1    2002    14     1200
1    2003    15     1250
1    2004    17     1100
1    2005    18     1350
2    2004    10     5750
2    2005    11     6025
...

我现在需要通过以下方式对其进行转换。

  • 我为每个感兴趣的特征创建了一个自己的矩阵,其中 每个公司(根据其ID)只有一行和 分隔列中每年的相应值。

  • 应该提到的是,并非每个公司都在每年的数据集中,因为它们可能在以后建立,已经关闭等,如示例所示。最后它应该看起来像下面的那样(大小变量的例子):

[ID] [2002] [2003] [2004] [2005]
1    14     15     17     18
2    -      -      10     11

到目前为止,我使用%in%命令尝试了它,但没有设法在正确的列中获取值。

1 个答案:

答案 0 :(得分:1)

DF <- read.table(text="[ID] [year] [size] [turnover]
1    2002    14     1200
1    2003    15     1250
1    2004    17     1100
1    2005    18     1350
2    2004    10     5750
2    2005    11     6025",header=TRUE)

library(reshape2)
dcast(DF, X.ID.~X.year.,value.var="X.size.")
#   X.ID. 2002 2003 2004 2005
# 1     1   14   15   17   18
# 2     2   NA   NA   10   11