2

我有一个 ROC.Value 数据框,如下所示:

Years   1           2   3       4   5
2002    3.000000    NA  0.22    NA      0
2003    2.988000    NA  0.22    NA      0
2004    2.993976    NA  0.22    NA      0
2005    3.071819    NA  0.22    NA      NA
2006    3.314493    NA  0.22    NA      NA
2007    3.526621    NA  0.22    NA      NA
2008    3.583047    NA  0.22    NA      NA
2009    4.109754    NA  0.22    NA      NA
2010    4.085096    NA  0.22    3.00    NA
2011    3.885096    NA  0.22    2.85    NA
2012    3.685096    NA  0.22    2.70    NA
2013    3.485096    NA  0.22    2.55    NA
2014    3.285096    NA  0.22    2.40    NA
2015    3.085096    NA  0.22    2.25    NA
2016    2.885096    NA  0.22    2.10    NA
2017    2.685096    NA  0.22    1.95    NA
2018    2.485096    NA  0.22    1.80    NA
2019    2.285096    NA  0.22    1.65    NA
2020    2.085096    NA  0.22    1.50    NA
2021    1.885096    NA  0.22    1.50    NA

当我得到正确的数据时,NA 值将被替换。

当我使用以下代码尝试将其转换为长格式时(这样我就可以制作堆叠箱线图):

m.ROC.Value = reshape(ROC.Value, 
                  idvar="Years", 
                  direction="long", 
                  varying=list(colnames(ROC.Value[2:6])),
                  timevar="Characteristic"
                  )

我得到这个错误Error in reshapeLong(data, idvar = idvar, timevar = timevar, varying = varying, : subscript out of bounds

有什么建议吗?我尝试的一切都没有成功(出现新错误)。

4

2 回答 2

2

该函数reshape是 R 的基函数,而不是reshape2。如果要使用reshape2,请使用以下命令:

melt(as.data.frame(ROC.Value), measure.vars = 2:6)
于 2012-10-21T15:06:15.750 回答
0

这是一个愚蠢的工作 - 但它有效。我没有立即添加年份列,而是在使用该melt()功能后添加了它。

#Don't add years here
#ROC.Value = cbind(years, Buy.Out.Value, Recycled.Green.Premium, Levy.Exemption.Certificate, Energy.Value, CO2.Price, deparse.level = 1)
ROC.Value = cbind(Buy.Out.Value, Recycled.Green.Premium, Levy.Exemption.Certificate, Energy.Value, CO2.Price, deparse.level = 1)
m.ROC.Value = melt(ROC.Value)
#Add years here (runs from 2002, so using id+2001)
m.ROC.Value = cbind(m.ROC.Value, m.ROC.Value$Var1 + rep(2001, 100))
colnames(m.ROC.Value) = c("id", "measure", "value", "years")
于 2012-10-21T16:48:21.060 回答