在 R 中跨 Dataframe 迭代 Group_by
Iterate Group_by across Dataframe in R
我正在尝试简化脚本中的一段当前代码。
我想按两个分类变量的每种可能组合进行分组,并总结我的解释变量的平均值。
使用 ggplot2 中找到的 mpg 数据库的示例;
library(tidyverse)
mpg %>% group_by(manufacturer, model) %>% summarise(mean = mean(hwy))
mpg %>% group_by(manufacturer, year) %>% summarise(mean = mean(hwy))
mpg %>% group_by(manufacturer, cyl) %>% summarise(mean = mean(hwy))
(这将一直持续到分类变量的所有组合 - 列完成)
mpg %>% group_by(cyl, year) %>% summarise(mean = mean(hwy))
等...
我的实际数据库有数百个分类变量,因此我想在 for 循环中或使用 purrr 来迭代该过程。
谢谢
这使用 purrr
到 select 字符和因子列,然后使用 combn()
到 select 所有组合。
library(ggplot2)
library(purrr)
library(dplyr)
map_lgl(mpg, ~ is.character(.) | is.factor(.))%>%
names(.)[.]%>%
combn(2, function(x) {mpg%>%group_by_at(x)%>%summarize(mean = mean(hwy))}, simplify = F)
请注意,这可能会变得混乱,因为 choose(100,2)
的计算结果为 4,950 种组合。
我正在尝试简化脚本中的一段当前代码。
我想按两个分类变量的每种可能组合进行分组,并总结我的解释变量的平均值。
使用 ggplot2 中找到的 mpg 数据库的示例;
library(tidyverse)
mpg %>% group_by(manufacturer, model) %>% summarise(mean = mean(hwy))
mpg %>% group_by(manufacturer, year) %>% summarise(mean = mean(hwy))
mpg %>% group_by(manufacturer, cyl) %>% summarise(mean = mean(hwy))
(这将一直持续到分类变量的所有组合 - 列完成)
mpg %>% group_by(cyl, year) %>% summarise(mean = mean(hwy))
等...
我的实际数据库有数百个分类变量,因此我想在 for 循环中或使用 purrr 来迭代该过程。
谢谢
这使用 purrr
到 select 字符和因子列,然后使用 combn()
到 select 所有组合。
library(ggplot2)
library(purrr)
library(dplyr)
map_lgl(mpg, ~ is.character(.) | is.factor(.))%>%
names(.)[.]%>%
combn(2, function(x) {mpg%>%group_by_at(x)%>%summarize(mean = mean(hwy))}, simplify = F)
请注意,这可能会变得混乱,因为 choose(100,2)
的计算结果为 4,950 种组合。