Aggregate()-R-是否可以对所有子集和超集进行计算?
我是新手。。。我读了很多aggregate()、by()和tapply()指南,但没有找到答案 使用R帮助页面中的示例(warpbreaks是R中的数据集) 但是,如果我还需要所有超集的结果(如下面第7到10行),我应该如何编码 如果有不使用聚合函数的方法也可以。非常感谢Aggregate()-R-是否可以对所有子集和超集进行计算?,r,aggregate-functions,R,Aggregate Functions,我是新手。。。我读了很多aggregate()、by()和tapply()指南,但没有找到答案 使用R帮助页面中的示例(warpbreaks是R中的数据集) 但是,如果我还需要所有超集的结果(如下面第7到10行),我应该如何编码 如果有不使用聚合函数的方法也可以。非常感谢 大家好,谢谢你们的回答!实际上,我有40多个子集和200多个变量要计算(在示例中,不仅仅是一个变量“中断”)。因此,我发现使用taply或aggregate(breaks~tension,data=warpbreaks,me
大家好,谢谢你们的回答!实际上,我有40多个子集和200多个变量要计算(在示例中,不仅仅是一个变量“中断”)。因此,我发现使用
taply
或aggregate(breaks~tension,data=warpbreaks,mean)
然后合并结果是低效的。请告诉我在这种情况下是否有更好的数据处理方法 我相信有一种更优雅的方法,但是简单的tapply
?怎么样,然后通过一点数据操作,您可以组合结果并实现您想要的结果
> tapply(warpbreaks$breaks, warpbreaks$tension, mean)
L M H
36.38889 26.38889 21.66667
> tapply(warpbreaks$breaks, warpbreaks$wool, mean)
A B
31.03704 25.25926
这是一个相当丑陋的答案
library(dplyr)
variables = c("wool", "tension")
1:length(variables) %>%
lapply(. %>% combn(variables, ., simplify = F)) %>%
unlist(recursive = F) %>%
c(list(character(0))) %>%
data_frame(variables = .) %>%
rowwise %>%
do({group_by_(warpbreaks, .dots = variables) %>%
summarize(breaks = mean(breaks))})
谢谢大家。从中我们学到了很多。重复回答: 通过
expand.grid
给出网格,并使用函数填充它
在我的例子中,由于我的真实数据中有不止一个变量(2000多个变量而不是一个“中断”),我最快找到了难看的答案
result1 <- aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
result2 <- aggregate(breaks ~ wool, data = warpbreaks, mean)
result3 <- aggregate(breaks ~ tension, data = warpbreaks, mean)
result4 <- aggregate(breaks ~ 0, data = warpbreaks, mean)
result <- rbind(result1,result2, result3,result4)
result1aggregate(breaks~tension,data=warpbreaks,mean)
羊毛也是这样,这就是你要问的吗?aggregate(breaks~0,data=warpbreaks,mean)
或者干脆mean(warpbreaks$breaks)
这是我问过的第一个问题!也许答案现在已经过时了,这是另一个部分重复:
library(dplyr)
variables = c("wool", "tension")
1:length(variables) %>%
lapply(. %>% combn(variables, ., simplify = F)) %>%
unlist(recursive = F) %>%
c(list(character(0))) %>%
data_frame(variables = .) %>%
rowwise %>%
do({group_by_(warpbreaks, .dots = variables) %>%
summarize(breaks = mean(breaks))})
result1 <- aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
result2 <- aggregate(breaks ~ wool, data = warpbreaks, mean)
result3 <- aggregate(breaks ~ tension, data = warpbreaks, mean)
result4 <- aggregate(breaks ~ 0, data = warpbreaks, mean)
result <- rbind(result1,result2, result3,result4)