我试图在汇总函数中用于循环,我无法通过循环进行汇总函数分配 X1
, X2
, X3
。我创建了一个虚拟的示例,并且我的代码也
year = cbind(rep(2000, 12), rep(2001, 12), rep(2002, 12))
year = as.vector(as.matrix(year))
month = cbind(seq(1:12), seq(1:12), seq(1:12))
month = as.vector(as.matrix(month))
X1 = rnorm(36, mean = 0, sd = 1)
X2 = rnorm(36, mean = 2, sd = 1)
X3 = rnorm(36, mean = 0, sd = 1)
DF = data.frame(cbind(year, month, X1, X2, X3))
for (i in 1:3) {
bb_month = aggregate(as.symbol(sprintf('X%1.0f', i)) ~ month + year, DF , sum)
}
如果我正确理解的话,这应该可以解决:
year <- rep(c(2000:2002), each = 12)
month <- rep(1:12, 3)
days <- rep("it's a day!", length(year)) #dummy var
X1 <- rnorm(36, mean = 0, sd = 1)
X2 <- rnorm(36, mean = 2, sd = 1)
X3 <- rnorm(36, mean = 0, sd = 1)
DF <- data.frame(year, month, days, X1, X2, X3)
aggregate(formula = . ~ year + month,
data = DF[, names(DF) != "days"],
FUN = sum)
编辑:如果您对X1-X3进行了类似的计算,则除循环外,可能还有更好的方法。但是,如果您坚持通过循环进行操作:
for (i in 1:3) {
fml <- as.formula(sprintf('X%i ~ month + year', i))
bb_month <- aggregate(formula = fml,
data = DF, FUN = sum)
###Loop continues###
}