Bestimmte Daten in Matrix mit Zeilenmittelwert ersetzen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
daten_tim

Bestimmte Daten in Matrix mit Zeilenmittelwert ersetzen

Beitrag 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)
  } 
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Bestimmte Daten in Matrix mit Zeilenmittelwert ersetzen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
daten_tim

Re: Bestimmte Daten in Matrix mit Zeilenmittelwert ersetzen

Beitrag von daten_tim »

Vielen Dank für den Tipp und die Hilfe.
Das funktioniert und macht Sinn.
Antworten