R: wilcoxon检验错误:分组因素必须恰好具有2个水平

3

我阅读了这个那个Stack Overflow的问题,但仍然无法解决我的问题。我有一个数据表,其中只包含我的总数据表的几列和行。

library(data.table)
structure(list(Patient = c("MB108", "MB108", "MB108", "MB108", 
"MB108", "MB108", "MB108", "MB108", "MB108", "MB108"), Visit = c(1, 
1, 1, 1, 9, 9, 9, 9, 12, 12), Stimulation = c("NC", "SEB", "PPD", 
"E6C10", "NC", "SEB", "PPD", "E6C10", "NC", "SEB"), `CD38   ` = c(83.3, 
63.4, 83.2, 91.5, 90.9, 70.9, 71, 88.4, 41.7, 47.9)), .Names = c("Patient", 
"Visit", "Stimulation", "CD38   "), class = c("data.table", "data.frame"
), row.names = c(NA, -10L), .internal.selfref = <pointer: 0x102806578>)

当visit为1和9时,我想对第4列进行t.test。我检查了NAs以及两列的长度。

谢谢任何帮助!

      #na.omit(boolean_dt3)
      #print(length(unlist(boolean_dt3[Visit== 1,4, with = FALSE])))
      #print(length(unlist(boolean_dt3[Visit== 9,4, with = FALSE])))

wilcox.test( unlist(boolean_dt3[Visit== 1,4, with = FALSE])~ unlist(boolean_dt3[Visit== 9,4, with = FALSE]) , paired = T, correct=FALSE)
3个回答

6

我刚刚想明白了,对于我的问题,使用,而不是~更有效。


1

以下是如何对第四列分组执行Wilcoxon检验的步骤:

 library(dplyr)
 wilcox.test( filter(df, Visit==1)$CD38, filter(df, Visit==9)$CD38, paired=TRUE)

我不想使用列名称,因为通常我不知道它。我还要对多个列运行测试,并使用循环来在所有列上运行测试。 - Rivka
听起来你会在所有列上自动运行这个程序时遇到困难。每一列只能有两个因素,而且每一列都不适合进行测试。 - CPak
为什么不呢?它们都是数值列。我想始终在 visit ==1 和 visit ==9 上运行测试,并将一列分成两个。 - Rivka
我明白了。我误解了你所说的“多列”。 - CPak

0

尝试这个公式:

wilcox.test(numeric_var ~ two_level_group_var)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接