当我尝试将数据从long转换为宽但我得到“聚合函数丢失:默认为长度”错误

时间:2015-05-06 00:35:51

标签: r reshape2 melt

我的数据是

state   prod_year   num_oil_wells
AK  2009    10
AK  2008    8
AK  2007    16
AK  2006    17
AK  2005    15
AK  2004    11
AK  2003    9
AK  2002    14...

我希望它采用以下格式;

state 2009 2008 2007
AK    10   8    16
AR    a    b    c  (a,b,c the values as per dataset).

1 个答案:

答案 0 :(得分:0)

很遗憾,您没有提供任何代码,也没有提供任何其他信息,因此不容易为您提供帮助。但首先,这是一个建议。

根据您提供的错误代码,您的数据似乎有重复的值,或类似的东西。

我建议以下内容,假设Ddata.frame

library(data.table)
D=data.table(D)
D=D[,lapply(.SD,sum),by=c('state','prod_year')]
dcast.data.table(D,state~prod_year, value.var='num_oil_wells')

现在,有一种更好的方法可以做到这一点,并且不使用data.table,但我不记得具体如何使用它(使用dcastaggregate )。但我希望这是一个好的开始。