Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Да, у меня была такая же проблема. Когда я выполнил:

rm(list=ls())
getwd()
setwd("C:/Users/JOSEP/Documents/UNI/Estadística Nitrats/Estadistica/Nitrats")
Nitrats_bo<- read.csv2("C:/Users/JOSEP/Documents/UNI/Estadística Nitrats/Dades/Nitrats Osona. Mireia.ActualitzatMunicipis_2016.csv", header=T)
head(Nitrats_bo)

составляет:

 X2005 X2006 X2007 X2008 X2009 X2010 X2011 X2012 X2013 X2014 X2015 X2016
1   0.4   0.2   0,6   0,7         0,6   0,9     1   0.7   1.3   0.9     1
2   0.4   0.8    NR    NR         0,7   0,8   0,9   1.1   1.1   0.9    NA
3    NA    NA                                        NA    NA    NA    NA
4    NA    NA                                        NA    NA    NA    NA
5    NA    NA                                        NA    NA    NA    NA
6    NA    NA                                        NA    NA    NA    NA

Потому что были факторы "NR".

Итак, я выбрасываю эти "NR" факторы и когда я выполняю...

X2005 X2006 X2007 X2008 X2009 X2010 X2011 X2012 X2013 X2014 X2015 X2016
1   0.4   0.2   0.6   0.7    NA   0.6   0.9   1.0   0.7   1.3   0.9     1
2   0.4   0.8    NA    NA    NA   0.7   0.8   0.9   1.1   1.1   0.9    NA
3    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
4    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
5    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
6    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA

И все в порядке!

Я спрашиваю, но как объединить численные и факторы в одном столбце df.

Thankyou!

Ответ 3

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

library(readr)
read_csv("file.csv", na = c(".", ".."))