2017-09-09 3 views
1

Ich bin ziemlich neu in R und ich arbeite an einem Datenrahmen mit mehreren NULL-Werten. Bis jetzt bin ich nicht in der Lage, diese zu ersetzen, und ich kann meinen Kopf über eine Lösung nicht einwickeln, so wäre es erstaunlich, wenn mir jemand helfen könnte.Ersetzen von NULL-Werten in einem dat.frame

Alle Variablen, bei denen der NULL-Wert auftritt, werden als Faktor klassifiziert.

Wenn ich die Funktion is.null (Daten) benutze, ist die Antwort FALSE, was bedeutet, dass sie ersetzt werden müssen, um einen ordentlichen Graphen erstellen zu können.

Kann ich set.seed verwenden, um alle NULL-Werte zu ersetzen, oder muss ich eine andere Funktion verwenden?

+4

Um Ihre Frage leichter zu lösen zu machen, lesen Sie bitte [Wie ein großes R reproduzierbares Beispiel machen?] (Https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproduzierbares Beispiel). – steveb

+1

NULL ist in Datenrahmen nicht erlaubt, weshalb ein reproduzierbares Beispiel hier grandios wäre. –

Antwort

2

Im Allgemeinen funktioniert R besser mit NA-Werten anstelle von NULL-Werten. Wenn durch NULL-Werte bedeuten Sie den Wert tatsächlich sagt „NULL“, wie auf einen leeren Wert gegenüber, dann können Sie dies NULL Faktorwerte mit NA ersetzen verwenden:

df <- data.frame(Var1=c('value1','value2','NULL','value4','NULL'), 
       Var2=c('value1','value2','value3','NULL','value5')) 

#Before 
    Var1 Var2 
1 value1 value1 
2 value2 value2 
3 NULL value3 
4 value4 NULL 
5 NULL value5 

df <- apply(df,2,function(x) suppressWarnings(levels(x)<-sub("NULL", NA, x))) 

#After 
    Var1  Var2  
[1,] "value1" "value1" 
[2,] "value2" "value2" 
[3,] NA  "value3" 
[4,] "value4" NA  
[5,] NA  "value5" 

Es hängt wirklich davon ab, was der Inhalt Ihrer Spalte sieht aber wie aus. Das obige macht nur bei Spalten, die nicht numerisch sind, Sinn. Wenn die Werte in einer Spalte numerisch sind, wird mit as.numeric() automatisch alles entfernt, was keine Ziffer ist. Beachten Sie, dass es wichtig ist, Faktoren in Zeichen zu konvertieren, bevor Sie in numerische Werte konvertieren. verwenden as.numeric so (as.character (x)), wie unten dargestellt:

df <- data.frame(Var1=c('1','2','NULL','4','NULL')) 

df$Var1 <- as.numeric(as.character(df$Var1)) 

#After 
    Var1 
1 1 
2 2 
3 NA 
4 4 
5 NA 
+0

@ L.Geerlofs - Wenn dies hilfreich war, denken Sie bitte daran, eine Lösung zu wählen, die der Community zeigt, dass sie gelöst ist und anderen mit einer ähnlichen Frage zu helfen, ihre Antwort noch schneller zu finden. – www

1

Sie dplyr und replace

Daten

df <- data.frame(A=c("A","NULL","B"), B=c("NULL","C","D"), stringsAsFactors=F) 

Lösung

library(dplyr) 

ans <- df %>% replace(.=="NULL", NA) # replace with NA 
verwenden können

Ausgang

 A B 
1 A <NA> 
2 <NA> C 
3 B D 

Ein weiteres Beispiel

ans <- df %>% replace(.=="NULL", "Z") # replace with "Z" 

Ausgabe

A B 
1 A Z 
2 Z C 
3 B D 
Verwandte Themen