2016-04-03 2 views
2

Angenommen, ich einen Datenrahmen haben, die etwa wie folgt aussieht:alle Spalten in einem Datenrahmen mit dplyr umwandeln?

set.seed(9782) 
df1 <- data.frame(X1 = rnorm(100, mean=123, sd=6), 
        X2 = rnorm(100, 567, 21), 
        X3 = rnorm(100, 783, 82)) 

Ich möchte alle Spalten von DF1 neu zu skalieren. Ich kann es mit dem folgenden Code tun:

means <- apply(df1, 2, mean) 
sds <- apply(df1, 2, sd) 
df1Rescaled <- data.frame(t(t(t(t(df1) - means))/sds)) 

Wie kann ich das gleiche mit dplyr tun?

+4

Ernsthaft verwenden, warum nicht nur 'Skala (DF1)'? –

+0

bezogen http://www.r-bloggers.com/a-faster-scale-function/ – rawr

+0

@rawr aber es gibt keine Rohre drin und es wurde nicht von Hadley gepostet :( –

Antwort

3

Wir scale

df1New <- df1 %>% 
      mutate_each(funs(scale))