我想寫一個函數,它需要一個數據框的名稱保存時間序列數據和該數據框中列的名稱作爲參數。該函數對該數據執行各種操作,其中之一是在列中添加每年的運行總計。我正在使用plyr。如何使用變量名稱來引用具有ddply的數據幀列?
當我使用直接與ddply和cumsum列的名字,我沒有問題:
require(plyr)
df <- data.frame(date = seq(as.Date("2007/1/1"),
by = "month",
length.out = 60),
sales = runif(60, min = 700, max = 1200))
df$year <- as.numeric(format(as.Date(df$date), format="%Y"))
df <- ddply(df, .(year), transform,
cum_sales = (cumsum(as.numeric(sales))))
這是一個好主意,但最終目的是能夠列名傳遞給該功能。當我嘗試在地方列名的使用變量,如我所料不工作:
mycol <- "sales"
df[mycol]
df <- ddply(df, .(year), transform,
cum_value2 = cumsum(as.numeric(df[mycol])))
我想我知道如何按名稱訪問列。這讓我很擔心,因爲這表明我沒有理解關於索引和提取的基本知識。我原以爲這種以名稱來引用列是一種常見的需要。
我有兩個問題。
- 我在做什麼錯誤,即我誤解了什麼?
- 有沒有更好的方法來解決這個問題,記住列的名字事先不會被函數知道?
TIA
它適合我。有用的例子,謝謝。 – SlowLearner 2012-01-15 14:44:51