2016-04-04 18 views
1

ich einen Datenrahmen (df) mit einer numerischen Spalte und zwei als unten Faktor Spalten:Ersetzen fehlende Werte des Faktors in einem Datenrahmen-alternative Art und Weise für Schleife-R

df<-data.frame(x=as.numeric(1:5), 
       y=as.factor(c("a","a","b",NA,"b")), 
       z=as.factor(c("m",NA,"n","m","m"))) 

Ich mag fehlte ersetzen Werte (NA) mit 0. Der Code unten funktioniert gut:

for(i in 2:ncol(df)){ 
    levels(df[[i]])<-c(levels(df[[i]]),0) 
    df[[i]][is.na(df[[i]])]<-0 
} 

Allerdings frage ich mich, ist es eine andere Möglichkeit, lapply, sapply Verfahren mit Anwendung? Ich werde mich sehr für jede Hilfe freuen. Danke vielmals.

Antwort

1

lapply Verwendung,

df[-1] <- lapply(df[-1], function(x) { 
       levels(x) <- c(levels(x),0) 
       replace(x, is.na(x),0) 
      }) 

Wenn wir recode von car

library(car) 
df[-1] <- lapply(df[-1], recode, "NA=0") 
verwenden
Verwandte Themen