Я пытаюсь написать функцию, которая принимает в качестве аргументов имя фрейма данных, содержащего данные временного ряда, и имя столбца в этом фрейме данных. Функция выполняет различные манипуляции с этими данными, одна из которых - добавление промежуточной суммы за каждый год в столбец. Я использую плир.
Когда я использую имя столбца напрямую с 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