aggregate
为状态的文档:R中的“data.frame的标准公式接口”是什么意思?
“aggregate.formula”是一个标准式接口为“aggregate.data.frame”。
我是R新手,我不明白这是什么意思。请解释!
谢谢!
乌里
aggregate
为状态的文档:R中的“data.frame的标准公式接口”是什么意思?
“aggregate.formula”是一个标准式接口为“aggregate.data.frame”。
我是R新手,我不明白这是什么意思。请解释!
谢谢!
乌里
跳转到的help(aggregate)
示例部分的中间,你会看到:
## Formulas, one ~ one, one ~ many, many ~ one, and many ~ many:
aggregate(weight ~ feed, data = chickwts, mean)
aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
aggregate(cbind(Ozone, Temp) ~ Month, data = airquality, mean)
aggregate(cbind(ncases, ncontrols) ~ alcgp + tobgp, data = esoph, sum)
四种不同的呼叫aggregate()
,全部采用公式接口。它上面你引述与使用整个R.
考虑的第一个例子方法调度机制做书面方式:
R> class(weight ~ feed)
[1] "formula"
R> class(chickwts)
[1] "data.frame"
它第一个参数(formula
类的),所以总调度。公式在R中得到解决的方式通常围绕着model.matrix
,我假设类似的情况发生在这里,并且等效呼叫最终由aggregate.data.frame
执行,使用第二个参数chickwts
,data.frame
。
R> aggregate(weight ~ feed, data = chickwts, mean)
feed weight
1 casein 323.583
2 horsebean 160.200
3 linseed 218.750
4 meatmeal 276.909
5 soybean 246.429
6 sunflower 328.917
R>
你问什么是不是最简单的新手问题,我建议你在一些文件和体面[R本书的一个很好的详尽说明,如果你有一个方便。 (和其他SO问题给予建议,为下一步该阅读。)
编辑:我得深入一点作为aggregate.formula()
不是从stats
命名输出,但是你可以通过在提示符下键入stats:::aggregate.formula
看看吧 - 这则清楚地表明确实如此,事实上,派遣aggregate.data.frame()
:
[.... some code omitted ...]
if (is.matrix(mf[[1L]])) {
lhs <- as.data.frame(mf[[1L]])
names(lhs) <- as.character(m[[2L]][[2L]])[-1L]
aggregate.data.frame(lhs, mf[-1L], FUN = FUN, ...)
}
else aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...)
}
<environment: namespace:stats>
R>
有没有办法做到这一点不点名的所有列在'cbind()返回'?对于多列,我想我不明白为什么不能做'aggregate(。〜var,...)'或者名字< - c(“var1”,“var2”,...)'然后'聚合(df [,名称]〜var,...)'。或者这是不可能的? – Hendy