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 に答える