2016-07-18 17 views
0

Ich habe alle Methoden, die ich auf Stackoverflow in diesem Thema gefunden habe versucht und nichts hat funktioniert. HierR. Ersetzen Nullwertdarstellung durch NA

ist ein Beispiel für meine Daten-Set namens TEST:

x2000 x2001 x2002 

100 1200 230 
200 2002 280 
:  1980 : 

":" steht für einen fehlenden Wert. Das Problem ist, dass ich diesen Doppelpunkt nicht durch R-akzeptierte NA ersetzen kann.

Was habe ich versucht:

sum(TEST %in c(":")) 
returns: [1] 0 

TEST[TEST==":"] <-NA #does nothing 

Ich habe versucht, die Datei im CSV-Format zu speichern, die Werte mit „NA“ in Excel ersetzen und es tut immer noch nichts. Die Spalten sind keine Faktoren. Wenn die Spalte den Wert von ":" enthält, lautet die Spalte "chr", andernfalls "int".

+1

Sie sollten ein reproduzierbares Beispiel geben. 'TEST [TEST ==": "] <-NA 'sollte funktionieren, aber ohne ein reproduzierbares Beispiel können wir Ihnen nicht sagen, warum dies nicht der Fall ist. –

+0

Wie von @RichardScriven angegeben, sollte der Code funktionieren. Ich vermute, dass das Problem darin besteht, wie Sie die Daten importieren. Vielleicht liest du die Datei mit 'read.csv()'? Wenn ja, versuchen Sie 'read.table (filename, header = TRUE)' stattdessen zu verwenden. – RHertel

Antwort

2

Wahrscheinlich ist die einfachste Methode, die na.strings Methode beim Einlesen der Daten mit einer der read. Familie von Funktionen einzustellen. Hier ist ein Beispiel mit read.table für Ihre Beispieldaten:

df <- read.table(header=T, text="x2000 x2001 x2002 
100 1200 230 
200 2002 280 
:  1980 : ", na.strings=":") 

Das gibt

df 
    x2000 x2001 x2002 
1 100 1200 230 
2 200 2002 280 
3 NA 1980 NA 

Vielleicht noch wichtiger ist, ist die Struktur des resultierenden data.frame Vektoren von ganzen Zahlen ist:

str(df) 
'data.frame': 3 obs. of 3 variables: 
$ x2000: int 100 200 NA 
$ x2001: int 1200 2002 1980 
$ x2002: int 230 280 NA 

Ohne dies erhalten Sie eine Mischung aus ganzzahligen Vektoren und Faktorvariablen, die den Reinigungsprozess ein wenig erschwert.