2012-12-11 14 views
12

Ho un insieme di dati .csv con molti valori mancanti, e mi piacerebbe R di riconoscere tutti allo stesso modo (il modo "corretto") quando ho letto la tavola in che ho usato:.Qual è il modo migliore per sostituire i valori mancanti con NA durante la lettura in un file .csv?

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

Questo script riempie tutte le celle vuote con qualcosa, ma non è coerente. Quando guardo i dati con head(import), alcune celle mancanti sono riempite con <NA> e alcune celle mancanti sono riempite con NA. Temo che R tratti questi due modi di identificare i valori mancanti in modo diverso quando si inizia ad analizzare il set di dati, quindi mi piacerebbe che l'importazione venisse letta uniformemente in quei valori mancanti.

Infine, alcuni dei valori mancanti nel mio file csv sono rappresentati solo con un punto. Vorrei anche che quei periodi venissero rappresentati dalla corretta notazione del valore mancante quando importazione in R.

+6

Il '' vs 'NA' significa solo che alcune delle colonne sono di carattere e alcune sono numeriche, tutto qui. Assolutamente non c'è niente di sbagliato in questo. Sarà difficile diagnosticare l'altro problema senza accedere al tuo csv (o ad alcune sue parti rappresentative). – joran

+6

Penso che tu possa semplicemente usare 'na.strings = c (" ",". "," NA ")' o qualcosa del genere (anche se sono d'accordo con @Joran che un piccolo esempio riproducibile [http://tinyurl.com/reproducible-000] sarebbe bello –

risposta

15

Il <NA> vs NA significa semplicemente che alcune delle tue colonne sono di carattere e altre sono numeriche, tutto qui. Assolutamente non c'è niente di sbagliato in questo.

Come Ben accennato in precedenza, se alcuni dei vostri valori mancanti nel CSV sono rappresentati da un unico periodo, ., allora è possibile specificare un vettore di valori che può essere considerato NA s tramite:

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

come argomento a read.csv.

0

Sì, ho avuto lo stesso problema. Quando ho eseguito:

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) 

fa:

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 

Perché c'era fattori "NR".

Così, ho buttare fuori questi fattori "NR" e quando eseguo ...

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 

Ed è tutto a posto!

Chiedo ma come combinare numeri e fattori in una stessa colonna df.

Grazie!

+0

JosephA, la tua domanda potrebbe ricevere una risposta se viene pubblicata come domanda piuttosto che come 'aggiunta' alla fine della tua risposta – HelloWorld

Problemi correlati