Как лучше всего заменить пропущенные значения на NA при чтении в .csv?

У меня есть набор данных .csv со многими пропущенными значениями, и я хотел бы, чтобы R распознавал их все одинаково («правильно»), когда я читаю таблицу. Я использовал:

import = read.csv("/Users/dataset.csv", 
                  header =T, na.strings=c(""))

Этот скрипт заполняет все пустые ячейки чем-то, но это непоследовательно. Когда я смотрю на данные с head(import), некоторые отсутствующие ячейки заполняются <NA>, а некоторые отсутствующие ячейки заполняются NA. Я боюсь, что R по-разному обрабатывает эти два способа определения пропущенных значений, когда начинает анализировать набор данных, поэтому я хотел бы, чтобы импорт читался равномерно в этих пропущенных значениях.

Наконец, некоторые из отсутствующих значений в моем CSV-файле представлены только точкой. Я также хотел бы, чтобы эти периоды были представлены правильным обозначением отсутствующих значений при импорте в R.


r csv na
person Luke    schedule 11.12.2012    source источник
comment
<NA> vs NA просто означает, что некоторые из ваших столбцов являются символьными, а некоторые — числовыми, вот и все. Абсолютно ничего плохого в этом нет. Будет сложно диагностировать другую проблему без доступа к вашему csv (или какой-то его репрезентативной части).   -  person joran    schedule 11.12.2012
comment
Я думаю, вы можете просто использовать na.strings=c("",".","NA") или что-то в этом роде (хотя я согласен с @Joran, что небольшой воспроизводимый пример [ tinyurl. com/reproducible-000 ] было бы неплохо   -  person Ben Bolker    schedule 11.12.2012


Ответы (2)


<NA> vs NA просто означает, что некоторые из ваших столбцов являются символьными, а некоторые — числовыми, вот и все. Абсолютно ничего плохого в этом нет.

Как упоминал Бен выше, если некоторые из ваших отсутствующих значений в csv представлены одной точкой, ., вы можете указать вектор значений, который следует рассматривать как NAs, через:

na.strings=c("",".","NA")

в качестве аргумента read.csv.

person joran    schedule 07.07.2013

Вы также можете использовать более гибкий пакет readr, эквивалентной функцией и аргументом которого являются read_csv() и na.

library(readr)
read_csv("file.csv", na = c(".", ".."))
person Joe    schedule 03.07.2019