Какой лучший способ заменить отсутствующие значения NA при чтении в .csv?
У меня есть набор данных .csv со многими отсутствующими значениями, и я бы хотел, чтобы R распознавал их одинаково ( "правильный" ), когда я читал таблицу. Я использовал:
import = read.csv("/Users/dataset.csv",
header =T, na.strings=c(""))
Этот script заполняет все пустые ячейки чем-то, но он не является постоянным. Когда я просматриваю данные с помощью head(import)
, некоторые отсутствующие ячейки заполняются с помощью <NA>
, а некоторые отсутствующие ячейки заполняются с помощью NA
. Я боюсь, что R рассматривает эти два способа идентификации недостающих значений по-разному при начале анализа набора данных, поэтому я хотел бы, чтобы импорт был равномерно прочитан в этих недостающих значениях.
Наконец, некоторые из отсутствующих значений в моем файле csv представлены только с периодом. Мне также хотелось бы, чтобы эти периоды были представлены нужной нужной нотой, когда я импортирую в R.
Ответы
Ответ 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(".", ".."))