2016-06-03 3 views
0

Я пытаюсь указать catagorical подгруппы, я нашел source что говорит, вы можете просто использовать этот макетR wilcox.test ошибкой категорично подмножество

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 

Любые предложения были бы замечательными. Спасибо!

ответ

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

Если существуют оба уровня, то я думаю, ваша переменная 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().

+0

Кто-то отправил комментарий минуту назад, они предположили, что идентификатор необходимо запустить 'walking.dat $ Application <- as.character (walking.dat $ Application)' , прежде чем запускать мой тест, и он фиксирует Это. но я не уверен, почему он исправляет его – RyanMe321

+0

Работал отлично :) – RyanMe321

+0

Понятно, что у меня была просто функция 'as.character()', мы просто заменили этот столбец в наборе данных самим, указав его символ как с коэффициентом. – RyanMe321

Смежные вопросы