R wilcox.test通过分类子集错误

时间:2016-06-03 06:10:32

标签: r

我试图指定catagorical子组,我发现source表明你可以简单地使用这种布局

Name:- sharukh khan

website:- www.google.com

Phone:- 9999999999

Phone:- 8888888888

email:- s@p.com

skype:-

linkedin:-

etc

然而,在我的数据集上,它不起作用,但如果将组转换为excel中的数值,则相同的格式有效。

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

任何建议都会很棒。 谢谢!

1 个答案:

答案 0 :(得分:2)

令人惊讶的是,你仍然可以看到我删除的评论。我之前发表了两条评论,指出了两个可能的问题。

问题1:

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

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不是Month的可用值。

第2期

如果两个级别都存在,那么我猜您的变量Applicationfactor。检查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()的危险。