首页 > 解决方案 > 如何在嵌套数据框中执行pairwise.t.test

问题描述

我想在嵌套数据框中执行 pairwise.t.test。可能吗?

library(dplyr)
library(broom)
library(tidyr)
library(purrr)
a <- mtcars%>%
  dplyr::select(disp, gear,am)%>%
  nest(-am)%>%
  mutate(t_test = map(data, ~ pairwise.t.test(disp, gear, p.adjust = "bonferroni")))

# Error in factor(g) : object 'gear' not found

标签: rpurrr

解决方案


您必须使用指定嵌套列内的数据框.x

a <- mtcars %>%
  select(disp, gear,am) %>%
  nest(data = c(-am)) %>%
  mutate(t_test = map(data, ~pairwise.t.test(.x$disp, .x$gear, p.adjust = "bonferroni")))

如果您不需要(嵌套)列data,您可以使用group_bysummarise

a <- mtcars %>%
  select(disp, gear,am) %>%
  group_by(am) %>%
  summarise(t_test = list(pairwise.t.test(disp, gear, p.adjust = "bonferroni")))

broom在这两种情况下,您都可以使用(我猜您想要这样,因为您加载了该包)将结果放入表格中。

a %>% 
  mutate(t_test = map(t_test, broom::tidy)) %>% 
  unnest(t_test)

推荐阅读