wilcox.test.formula(x ~ group, data = df) 中的错误:分组因子必须正好有 2 个

  • 本文关键字:错误 formula test group df data wilcox r
  • 更新时间 :
  • 英文 :


>我有一个这样的数据框和一百多个这样的列

Group   V1  V2  V3
1   NaN NaN NaN
1   NaN NaN NaN
1   NaN NaN NaN
1   NaN NaN NaN
1   0.12611 10.75   NaN
1   NaN NaN 1.9909
1   0.085867    12.323  2.0125
1   NaN NaN 2.3301
1   NaN NaN NaN
2   0.0574  3.827   NaN
2   0.15607 1.1194  NaN
2   NaN 0.81006 0.77779
2   0.0737  0.35366 NaN
2   0.1265  2.4674  0.82335
2   0.097067    NaN 0.90923
2   0.82887 1.8804  0.96405

当我尝试对每一列进行 wilcox.test 时,它可以工作 wilcox.test(V1 ~ Group, data = df)

但是,如果我尝试像这样申请 wilcox <- apply(df[,-1], 2, function(x) wilcox.test(x ~ Group, data = df))它给出错误:

Error in wilcox.test.formula(x ~ Group, data = df) : 
grouping factor must have exactly 2 levels 

有人知道出了什么问题吗?

我们需要为那些元素数量较少的情况创建一个if/else条件。 假设这是因为缺少值

library(purrr)
library(dplyr)
df[-1] %>% 
    map(~ tibble(.x, Group = df$Group)) %>%
    map(~ if(sum(!is.na(.$.x))>2 | nrow(.x) > 2) 
             broom::tidy(wilcox.test(.x~Group, data = .) ) else NA)

对 OP 的代码使用相同的方法

apply(df[,-1], 2, function(x) if(sum(!is.na(x)) >2 ) 
                     wilcox.test(x ~ Group, data = df) else NA) 

相关内容

最新更新