Ошибка при конвертации с as.numeric () в R - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть набор данных:

 > x
    Treatment X1 X2
1         T1  6  7
2         T1  5  9
3         T1  8  6
4         T1  4  9
5         T1  7  9
6         T2  3  3
7         T2  1  6
8         T2  2  3
9         T3  2  3
10        T3  5  1
11        T3  3  1
12        T3  2  3

Я пытаюсь найти средства для столбцов X1 и X2.Если я запускаю данные как есть, я получаю сообщение об ошибке:

> t1 <- subset(x[2:3], x$Treatment=="T1")
> x_vec <- colMeans(t1, na.rm = TRUE)
Error in colMeans(t1, na.rm = TRUE) : 'x' must be numeric

Итак, мне нужно преобразовать X1 и X2 в числовые значения:

t1$X1 <- as.numeric(as.factor(t1$X1))
t1$X2 <- as.numeric(as.factor(t1$X2))
x_vec <- colMeans(t1, na.rm = TRUE)

Но когда я это сделаю,Я получаю неправильный результат:

> x_vec
 X1  X2 
6.0 4.4 

T1, после преобразования в as.numeric () , показывает:

> t1
  X1 X2
1  6  4
2  5  5
3  8  3
4  4  5
5  7  5

Почему значения в X2изменилось после преобразования в числовое?

1 Ответ

0 голосов
/ 03 декабря 2018

Это довольно распространенная проблема, с которой сталкиваются новые пользователи R.Проблема в том, что вы используете as.factor.выполнение as.numeric для коэффициента преобразует значение в числовой индекс метки, а не конвертирует саму метку в число.Вы можете либо удалить вызов на as.factor, либо выполнить as.character для коэффициента перед вызовом as.numeric.

Обратите внимание, что некоторые функции, такие как as.data.frame, автоматически преобразуют символы в факторы, что может вызвать проблемы.Проверьте опцию stringsAsFactors для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...