R: Удалить наблюдения персонажа в переменной - PullRequest
1 голос
/ 07 июля 2011

У меня есть переменная в кадре данных, наблюдения которой представляют собой сочетание числовых и символьных значений (из-за неправильного ввода данных).Как я могу включить только те наблюдения, которые являются числовыми?Предположим, что значения имени файла $ varname равны (1, 2, 1, 5, 3, a, 3, d, 1), я хотел бы выделить подстановки "a" и "d" и оставить только остальные значениячисловой.

Ответы [ 2 ]

4 голосов
/ 07 июля 2011

Вы можете использовать тот факт, что as.numeric будет преобразовывать символьные строки в NA при сохранении числовых данных:

x <- c(1, 2, 1, 5, 3, "a", 3, "d", 1)
as.numeric(x)

[1]  1  2  1  5  3 NA  3 NA  1
Warning message:
NAs introduced by coercion 

Теперь используйте is.na, чтобы проверить значения NA и исключитьони с использованием векторного поднабора:

y <- as.numeric(x)
y[!is.na(y)]
[1] 1 2 1 5 3 3 1
1 голос
/ 07 июля 2011

Без воспроизводимого примера трудно увидеть, как на самом деле выглядят ваши данные.Например, является ли столбец вашего фрейма данных фактором или просто строками?Если это просто строки, то ответ Андри работает (просто используйте as.numeric()), и если данные являются фактором, вам сначала нужно преобразовать их в строки с as.character(x):

as.numeric(as.character(filename$varname))

.NA с, но это абсолютно нормально, так как эти значения действительно отсутствуют.

РЕДАКТИРОВАТЬ: Чтобы уточнить abit больше.У вас есть фрейм данных, поэтому вы не хотите извлекать значения из фрейма данных, так как тогда он больше не будет фреймом данных (равными строками).Вместо этого вы хотите правильно назначить NA для пропущенных значений, поскольку большинство статистических функций в R могут их обрабатывать.

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