【发布时间】:2012-07-06 07:29:36
【问题描述】:
按月为我提供平均销售额的聚合函数运行良好。
library(chron)
set.seed(42)
dat <- data.frame(sales = rnorm(1000, mean = 1000, sd = 40),
dates = rep(as.Date(seq(from = 14610, to = 14859),
origin = "1970-01-01"),4))
aggregate(sales~months(as.chron(dates)), mean, data=dat)
...并产生以下输出:
months(as.chron(dates)) sales
1 Jan 1000.0723
2 Feb 999.1580
3 Mar 995.3055
4 Apr 1000.4912
5 May 1003.9703
6 Jun 997.1086
7 Jul 996.5939
8 Aug 998.5012
9 Sep 1001.3709
我的理解是下面的 cast 语句应该产生相同的输出:
cast(dat, months(as.chron(dates)) ~ ., mean, value="sales")
而是返回以下错误:
Error: Casting formula contains variables not found in molten data: months(as.chron(dates))
我可能会遗漏一些东西,但是否可以在 cast 语句中使用 chronmonths() 调用?以下两个语句将在 cast() 中完成相同的操作,但我试图一步完成并更好地了解 cast 的工作原理。
dat$mont <- months(as.chron(dat$dates))
cast(dat, mont ~ ., mean, value="sales")
提前致谢, --JT
【问题讨论】:
-
你说得对,
reshape公式的参数只能是变量名而不是变量的函数。见cast_parse_formula和check_formula
标签: r aggregate reshape reshape2