2013-12-10 2 views
3

Я работаю с набором данных, который включает в себя имена, введенные заглавными буквами. Мне нужно работать с именами как символьные переменные, а не как факторы.Использование «NA» в качестве законного значения без знака

Один человек в наборе данных имеет имя «NA». Могу ли я получить R, чтобы принять «NA» как законное значение символа? Мое решение для работы было переименовать этого человека NAA, но мне интересно узнать, есть ли лучший способ.

+5

У вас есть NA значения в наборе данных в противном случае? Если нет, просто измените аргумент 'na.strings' в' read.table' на что-то еще. – A5C1D2H2I1M1N2O1R2T1

+2

'' NA "' - значение символа в R, а не значение NA. Поэтому просто убедитесь, что ваши реальные значения NA закодированы по-разному и позаботятся об этом во время импорта. – Roland

+0

Благодаря Роланду и Ананде. Установка na.strings = "ZZZ" в read.table заботится о моей проблеме. – JMH

ответ

1

В качестве демонстрации моего комментария, рассмотрим следующий пример CSV файл:

x <- tempfile() 
cat("v1,v2", "NA,1", "AB,3", sep = "\n", file = x) 

cat(readLines(x), sep = "\n") 
# v1,v2 
# NA,1 
# AB,3 

Вот str базового read.csv. Обратите внимание на NA рассматривается как NA

str(read.csv(x)) 
# 'data.frame': 2 obs. of 2 variables: 
# $ v1: Factor w/ 1 level "AB": NA 1 
# $ v2: int 1 3 

Теперь указать другой символ в качестве аргумента na.strings:

str(read.csv(x, na.strings = "")) 
# 'data.frame': 2 obs. of 2 variables: 
# $ v1: Factor w/ 2 levels "AB","NA": 2 1 
# $ v2: int 1 3 
+0

FYI' read.csv' теперь имеет текстовый аргумент: 'read.csv (text = c (" v1, v2 "," NA, 1 "," AB, 3 "))' – hadley

+0

@hadley, я очень хорошо разбираюсь в текстовом аргументе. Просто демонстрирую, как если бы читал из реального файла, чтобы воспроизвести то, что может пройти OP. – A5C1D2H2I1M1N2O1R2T1

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