Seite 1 von 1

Bestimmte Daten in Matrix mit Zeilenmittelwert ersetzen

Verfasst: Mi Mai 24, 2017 10:42 am
von daten_tim
Liebes Forum,
ich muss mich um outliers in meiner matrix kümmern. Hierfür habe ich alle auf NA gesetzt und wollte diese nun durch den mittelwert der jeweiligen zeile ersetzen, also mit [i,] arbeiten. Die folgenden Versuche scheiterten. Aber ich komme da auch nicht weiter. Das Internet hat mir auch nicht geholfen - da wollen alle immer nur Null setzen. Hat jemand eine Idee?

Code: Alles auswählen

for(i in 1:ncol(data)){
    data[is.na(data[,i]), i] <- mean(data[i,], na.rm = TRUE)
  } 
oder

Code: Alles auswählen

for(i in 1:nrow(data)){
    data[is.na(data[i,]), i] <- mean(data[i,], na.rm = TRUE)
  } 

Re: Bestimmte Daten in Matrix mit Zeilenmittelwert ersetzen

Verfasst: Mi Mai 24, 2017 11:01 am
von bigben

Code: Alles auswählen

m <- matrix(c(1,2,3,1,NA,3,NA,NA,3), ncol=3)

for(i in 1:nrow(m)){
  m[i, is.na(m[i,])] <- mean(m[i,], na.rm = TRUE)
} 

Generell besser: Berechnung in einer Funktion verstecken und mit einem sinnvollen Namen versehen:

Code: Alles auswählen

imputeByRow <- function(m){
  for(i in 1:nrow(m)){
    m[i, is.na(m[i,])] <- mean(m[i,], na.rm = TRUE)
  }
  return(m)
}


m <- matrix(c(1,2,3,1,NA,3,NA,NA,3), ncol=3)
print(m)

newM <- imputeByRow(m)
print(newM)
Bitte gib, wenn Du die nächsten Fragen stellst, selbst einen Beispieldatensatz, wie hier meine Matrix m, mit an.

LG,
Bernhard

Re: Bestimmte Daten in Matrix mit Zeilenmittelwert ersetzen

Verfasst: Fr Mai 26, 2017 2:25 pm
von daten_tim
Vielen Dank für den Tipp und die Hilfe.
Das funktioniert und macht Sinn.