首页 > 解决方案 > 在 R 中分组后,如何为不同的列重复函数?

问题描述

我正在寻找一种有效的方法来为我的数据中的多个列生成输出并将输出放在一个表中。

数据中的列:GROUP、x、n、l、A、B、C、D、E、F、G

目前我的代码如下所示:

stat.test_A <- data %>%
   t_test(A ~ GROUP, detailed = TRUE, var.equal = TRUE) %>%
    add_significance()
stat.test_A

data %>% cohens_d(A ~ GROUP var.equal = TRUE)

stat.test_B <- data %>%
   t_test(B ~ GROUP, detailed = TRUE, var.equal = TRUE) %>%
    add_significance()
stat.test_B

data %>% cohens_d(B ~ GROUP var.equal = TRUE)

我想对 A:G 列重复它,然后将输出放在一个大表中。

标签: r

解决方案


最好创建一个函数来执行此操作

library(rstatix)
library(dplyr)
f1 <- function(dat, col_nm) {
    stat_out1 <- dat %>%
       t_test(formula = 
       eval(rlang::expr(!! rlang::ensym(col_nm) ~ GROUP)),
         var.equal = TRUE, detailed = TRUE) %>%
        add_significance()
    stat_out2 <- dat %>%
     cohens_d(rlang::expr(!! rlang::ensym(col_nm) ~ GROUP)), var.equal = TRUE)
  return(dplyr::lst(stat_out1, stat_out2))

   }
  

然后,我们要么单独调用它

f1(data, A)
f1(data, "A")

或者使用循环

library(purrr)
map(c("A", "B", "C", "D", "E", "F", "G"), ~ f1(data, .x))

推荐阅读