2013-12-09 3 views
0

Так что у меня этот вектор:Mean функция R (Dealing с факторами)

x 
[1] 76 89 78 50 84 56 29 53 32 68 
112 Levels: 0 1 10 100 101 102 103 104 105 106 107 108 109 11 110 12 13 ... eta 

, почему это происходит?

[1] NA 
Warning message: 
In mean.default(x) : l'argomento non è numerico o logico: restituisco NA 
+1

Попытка перевести сообщение об ошибке: «аргумент не является ни числовым, ни логичным. Заменяется на N/A». – Floris

+1

Вы можете установить язык на английский, используя [this] (http://stackoverflow.com/questions/13575180/how-to-change-the-language-of-errors-in-r) – agstudy

ответ

6

Похоже, что x является фактором. При преобразовании коэффициентов в числа есть gotcha. Вам необходимо использовать:

mean(as.numeric(as.character(x)), na.rm=TRUE) 

Если вы сначала не конвертируете в символы, вы получите коды факторов.

+0

Holy #### это действительно есть! Два больших пальца вверх! – user3083324

0

Похоже x категорический переменная - попробуйте

mean(as.numeric(as.character(x))) 

(как на Джеймса, указывая на то, что без as.character, вы получаете фактор коды:

x <- as.factor(10:20) 
as.numeric(x) 
[1] 1 2 3 4 5 6 7 8 9 10 11 

Оставляя na.rm=TRUE так , в то время как безопаснее, это не вызывало проблемы)

+1

Спасибо! Как узнать, имею ли я дело с категориальными или численными переменными? – user3083324

+1

Что выдавало, так это то, что печать 'x' дала вам уровни. 'R' обычно анализирует« числовые »вещи на числовые переменные, но я бы предположил, что этот вектор немного нарезался, чтобы избавиться от некоторых из них. Если вы проверите оригинальный вектор, я готов поспорить, вы найдете что-то, что не является «числом». – colcarroll

+0

Используйте 'str (your_object)', чтобы посмотреть, в каком режиме хранятся вещи. –

0

В дополнение к изменению числовых значений, когда вы используете функцию mean, убедитесь, что вы указали na.rm=TRUE, если у вас есть значения NA. В противном случае отображается предупреждение, которое вы видели.

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