【问题标题】:rstatix failing to recognise columns in wilcox_testrstatix 无法识别 wilcox_test 中的列
【发布时间】:2020-05-22 03:15:09
【问题描述】:

我在 R 中有一个 data.frame,其中包含大多数类型的列:

df <- data.frame(ID = c(1, 2, 3, 4), 
                 Gender = c("Male", "Male", "Female", "Male"),
Average_Score_Test_1 = c(1.2,2.4,3.2,1.8),
Average_Score_Test_2 = c(3.2, 2.8, 1.7, 2.5),
Qualification = c("UG","UG","UG","PG")
)

虽然有成千上万的列和行。 我有几个列组名称的向量,例如

DV_Type1 <- c("Average_Score_Test_1", "Average_Score_Test_2")

对变量进行分组也是如此

Type1_Group <- c("Gender", "Qualification")

然后我运行了一个嵌套的 for 循环,该循环遍历每个向量的元素以运行显着性测试等...

这对于 kruskal_test 运行完美,例如

df %>%
  kruskal_test(df[[DV_Type1[1]]] ~ df[[Type1_Group[1]]])

但使用完全相同的代码,但我得到的是 wilcox_test 而不是 kruskal_test

df %>%
  wilcox_test(df[[DV_Type1[1]]] ~ df[[Type1_Group[1]]])

错误:无法提取不存在的列。 'Type1_Group[1]' 列不存在

为什么这不起作用?

使用 Rstatix 在 tibble 中获取结果。

【问题讨论】:

标签: r loops


【解决方案1】:

您直接将变量传递到测试中,而不考虑环境。不太确定 rstatix 是如何工作的。

我可以在下面建议一个跟踪您的数据的解决方案,但是当然,没有什么比令人难以置信的嵌套 for 循环更好的了。

首先我们为每个测量值嵌套数据,我想你有很多测量值,并且两个自变量相同,所以应该没问题:

library(tidyr)
library(dplyr)
library(broom)
library(purrr)

df_bymeasure = df %>% 
pivot_longer(cols=contains("Average_Score")) %>% nest(data=c(ID,Gender,Qualification,value))

# A tibble: 2 x 2
  name                 data            
  <chr>                <list>          
1 Average_Score_Test_1 <tibble [4 × 4]>
2 Average_Score_Test_2 <tibble [4 × 4]>

现在我们可以进行我们想要的测试了:

res = df_bymeasure %>% 
mutate(
kw_Gender = map(data,~ tidy(kruskal.test(value ~ Gender,data=.x))),
wi_Gender = map(data,~ tidy(wilcox.test(value ~ Gender,data=.x))),
kw_Qualification = map(data,~ tidy(kruskal.test(value ~ Qualification,data=.x))),
wi_Qualification = map(data,~ tidy(wilcox.test(value ~ Qualification,data=.x)))
)

然后您可以查看一组结果,例如 kw 性别测试:

res %>% unnest(kw_Gender)
# A tibble: 2 x 9
  name  data  statistic p.value parameter method wi_Gender kw_Qualification
  <chr> <lis>     <dbl>   <dbl>     <int> <chr>  <list>    <list>          
1 Aver… <tib…       1.8   0.180         1 Krusk… <tibble … <tibble [1 × 4]>
2 Aver… <tib…       1.8   0.180         1 Krusk… <tibble … <tibble [1 × 4]>
# … with 1 more variable: wi_Qualification <list>

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 2021-10-28
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2020-12-17
    • 2021-11-17
    相关资源
    最近更新 更多