Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aggregate()-R-是否可以对所有子集和超集进行计算?_R_Aggregate Functions - Fatal编程技术网

Aggregate()-R-是否可以对所有子集和超集进行计算?

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

我是新手。。。我读了很多aggregate()、by()和tapply()指南,但没有找到答案

使用R帮助页面中的示例(warpbreaks是R中的数据集)

但是,如果我还需要所有超集的结果(如下面第7到10行),我应该如何编码

如果有不使用聚合函数的方法也可以。非常感谢



大家好,谢谢你们的回答!实际上,我有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)

result1
aggregate(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)