rdata: eine Methode zum Durchlaufen der Spalte Namen eines Daten-frame?
Habe ich ca 30 Zeilen code, die genau das tun (immer Z-scores):
data$z_col1 <- (data$col1 - mean(data$col1, na.rm = TRUE)) / sd(data$col1, na.rm = TRUE)
data$z_col2 <- (data$col2 - mean(data$col2, na.rm = TRUE)) / sd(data$col2, na.rm = TRUE)
data$z_col3 <- (data$col3 - mean(data$col3, na.rm = TRUE)) / sd(data$col3, na.rm = TRUE)
data$z_col4 <- (data$col4 - mean(data$col4, na.rm = TRUE)) / sd(data$col4, na.rm = TRUE)
data$z_col5 <- (data$col5 - mean(data$col5, na.rm = TRUE)) / sd(data$col5, na.rm = TRUE)
Gibt es eine Möglichkeit, vielleicht mit apply()
oder etwas, das kann ich nur im wesentlichen tun, (python):
for col in ['col1', 'col2', 'col3']:
data{col} = ... z score code here
Dank R Freunde.
- Sie möchten, werfen Sie einen Blick auf
colMeans
und diese Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
data.frame
ist eine Liste, so können Sielapply
. Verwenden Sie nichtapply
auf einedata.frame
wie das wird, zwingen zu einermatrix
.Oder verwenden Sie
scale
führt diese Berechnung auf einem Vektor.Können Sie übersetzen die
python
Stil Ansatz direktBeachten Sie, dass dieser Ansatz nicht Speicher effizient in R als
[[<.data.frame
Kopien der gesamten Daten.Rahmen jedes mal.Ich denke, du hast Recht, apply() kann die Art und Weise, hier zu gehen.
Beispiel:
Die Funktion apply() wird eine matrix oder ein array als erstes argument. Die "2" bezieht sich auf die dimension der Funktion iteriert über - in unserem Fall Spalten. Wenn wir wollten, tun Sie es durch die Reihe, machten wir mit "1". Schließlich haben wir die Funktion, die wir anwenden wollen, um jede Spalte. Sehen ?gelten für mehr details.
Check this out
Ich iterieren über die Daten-Frames zu erkennen, NA Zeilen