R wilcox.通过分类子集误差检验



我正在尝试指定分类子群,我发现了一个来源,建议您可以简单地使用这种布局

wilcox.test(growth ~ sugar, data= carbs, subset= sugar %in% c("test", "C"))

然而,在我的数据集上,它不起作用,尽管如果在excel中将组转换为数值,同样的格式也起作用。

wilcox.test(Distance~Application, data= walking.dat,
subset = Application %in% c("Control", "Cue-Lure"))
Error in wilcox.test.formula(Distance ~ Application, data = walking.dat,  : 
grouping factor must have exactly 2 levels

任何建议都很好。谢谢

你仍然可以看到我删除的评论,真是太神奇了。我早些时候发表了两项评论,指出了两个可能的问题。

问题1:

walking.dat$Application中很可能不存在"Control""Cue-Lure"。我建议你试试

with(walking.dat, unique(Application[Application %in% c("Control", "Cue-Lure")]))

看看你得到了什么。可能你要么只得到一个元素,要么什么都没有。

我可以很容易地重建你遇到的错误。考虑内置的R数据集airquality

data(airquality)
unique(airquality$Month)  ## 5 6 7 8 9
wilcox.test(Ozone ~ Month, data = airquality, subset = Month %in% c(6, 7))  ## fine
wilcox.test(Ozone ~ Month, data = airquality, subset = Month %in% c(1, 7))  ## fail

在第二种情况下,您会得到一个错误:

Error in wilcox.test.formula(Ozone ~ Month, data = foo, subset = Month %in%  : 
grouping factor must have exactly 2 levels

因为1不是CCD_ 5的可用值。

问题2

如果两个级别都存在,那么我猜您的变量Application就是factor。检查class(Application)。问题的一个因素,可以从这里看出:

x <- factor(letters[1:4])
x[x %in% c("a", "b")]
#[1] a b
#Levels: a b c d

请注意,因子水平在%in%之后确实会下降。然而,如果你这样做:

x <- as.character(x)
x[x %in% c("a", "b")]
#[1] "a" "b"

尽管您得到了字符,公式方法会自动将其强制为因子。通过这种方式,不存在额外的未使用因子水平可能破坏wilcox.test()的危险。

最新更新