2016-08-10 24 views
0

使用R.我是一個新手。我確實試圖尋找這種特殊的錯誤/情況,並且空手而歸。這裏所說:無法在R dcast中識別出計算列

我從另一列

MYDATA$NETREV <- (MYDATA[60] - MYDATA[51]) 

減去現有列上創建一個數字列當我嘗試用dcast對新列這樣做:

NETREV.TREND <- dcast(MYDATA, SCHOOL ~ YEAR, value.var="NETREV") 

我得到這個錯誤:

Error in `[.data.frame`(value, overall) : undefined columns selected 

我試過提到新位置的列,value.var=MYDATA[61],當我這樣做,我取得開頭的錯誤:

Error: value.var (list(OPREVADJ = c(-9280446, -14437883, -12637590, -14365373, -17149995, -13960077, -11458410, -3701678, -861092, -10071075, 23965, -5324362, -5974479, 14275488, -6118691, -7801750, -7838486, -14343695, NA, -17785841, -14357459, -14787673, -480654 ... etc.

使用dcast在我的數據任何其他列工作正常,究竟什麼是應該做的。

對不起,我沒有早點拼出來。這就是我的數據是這樣的:

SCHOOL YEAR REVENUE EXPENSES 

A 2011 10000000 12000000 

A 2012 15000000 14000000 

A 2013 16000000 15700000 

B 2011 8000000 6000000 

B 2012 7500000 6500000 

B 2013 7770000 5500000 

我創建新列NETREV(這顯然是收入減去支出)

SCHOOL YEAR REVENUE EXPENSES NETREV 

A 2011 10000000 12000000 -2000000 

A 2012 15000000 14000000 1000000 

A 2013 16000000 15700000 300000 

B 2011 8000000 6000000 2000000 

B 2012 7500000 6500000 1000000 

B 2013 7770000 5500000 2270000 

我想dcast使它看起來像下面:

SCHOOL 2011 2012 2013 

A -2000000 1000000 300000 

B 2000000 1000000 2270000 
+0

檢查列名稱。你從'名字'(MYDATA)[名字(MYDATA)%%c(「SCHOOL」,「YEAR」)]'中得到了什麼? –

+2

請提供一個可複製的例子,包括樣品數據。有關什麼和如何包括很好的參考在這裏:[幫助/ mcve](http://stackoverflow.com/help/mcve)和[可重現的示例](http://stackoverflow.com/questions/5963269/how-to - 製作 - 一個偉大-R重現-例子)。 – r2evans

+0

@ jgadoury的答案將解決直接函數,但是您也可能想要*不使用默認的聚合函數「length」。我會推薦'sum'。 – Gregor

回答

1

如果要訪問data.frame中的列,則應使用MYDATA[, i],其中i是列號。

MYDATA$NETREV <- (MYDATA[, 60] - MYDATA[, 51]) 
+0

分配新列時,這與OP的代碼沒有區別 –

+0

太棒了!當我以前做過時,它仍在創建NETREV列。但首先做到這一點絕對奏效。謝謝。仍在學習這一切和所有的特質。 – PML