2016-07-18 6 views
0

Я пробовал все методы, которые я нашел в stackoverflow относительно этой темы, и ничего не работало.R., заменив представление нулевого значения на NA

Вот пример моего набора данных под названием TEST:

x2000 x2001 x2002 

100 1200 230 
200 2002 280 
:  1980 : 

":" представляет собой недостающее значение. Проблема в том, что я не могу заменить этот двоеточие на R-принятое NA.

То, что я пробовал:

sum(TEST %in c(":")) 
returns: [1] 0 

TEST[TEST==":"] <-NA #does nothing 

Я пытался сохранить файл в формате CSV, замените значения с «NA» в первенствует и по-прежнему ничего не делает. Столбцы не являются факторами. если столбец содержит значение «:», то столбец «chr», иначе он «int».

+1

Вы должны привести воспроизводимый пример. 'TEST [TEST ==": "] <-NA' должен работать, но без воспроизводимого примера мы не можем сказать вам, почему это не так. –

+0

Как отметил @RichardScriven, код должен работать. Я подозреваю, что проблема заключается в том, как вы импортируете данные. Может быть, вы читаете файл с помощью 'read.csv()'? Если да, попробуйте вместо этого использовать 'read.table (filename, header = TRUE)'. – RHertel

ответ

2

Возможно, самый простой способ - установить метод na.strings при чтении данных с помощью одного из семейств функций read.. Вот пример с read.table для примера данных:

df <- read.table(header=T, text="x2000 x2001 x2002 
100 1200 230 
200 2002 280 
:  1980 : ", na.strings=":") 

Это возвращает

df 
    x2000 x2001 x2002 
1 100 1200 230 
2 200 2002 280 
3 NA 1980 NA 

Возможно, что еще более важно, структура полученного data.frame является векторы целых чисел:

str(df) 
'data.frame': 3 obs. of 3 variables: 
$ x2000: int 100 200 NA 
$ x2001: int 1200 2002 1980 
$ x2002: int 230 280 NA 

Без этого вы получите смесь целых векторов и факторных переменных, что немного усложняет процесс очистки.

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