2017-04-06 2 views
0

Ich berechne den Durchschnitt nach dem Zentrieren einer Variablen. Durch die Zentrierung wird der Mittelwert der Variablen von ihrer ursprünglichen Variablen subtrahiert. Ich verwende dplyr Paket. Ich kann es für eine Variable über die Funktion muate() tun. Wie kann ich das Gleiche für mehrere Variablen mit Mutate tun?Benutzerdefinierte Funktion für mehrere Variablen

set.seed(1)  # for reproducible example 
train <- data.frame(X1=sample(1:100,100), 
       X2=1e6*sample(1:100,100), 
       X3=1e-6*sample(1:100,100)) 

library(dplyr) 
train %>% mutate(center = X1-mean(X1)) %>% 
    summarise(round(mean(center),4)) 
+0

Sie können 'mutate_all' –

+0

Ich bin nicht in der Lage in der Funktion X1 loswerden Vielen Dank im Voraus! –

+0

Nicht sicher, ob Sie ein falsches Beispiel geben, aber 'mean (x-mean (x))' ist offensichtlich 0 (unabhängig von 'x') und kann nur für Gleitkomma-Präzision einen anderen Wert geben. – nicola

Antwort

0

Hoffnung das ist, was Sie suchen (Referenz: na.rm = TRUE erforderlich ist, innerhalb mean()

library(dplyr) 
train %>% summarise_all(function(x) mean(x - mean(x))) 
# X1 X2   X3 
# 0 0 -3.251647e-21 
0
train %>% mutate_each(funs(((function(x){x-mean(x)})(.)))) %>% 
summarise_each(funs(mean(.), na.rm = TRUE))) 
Verwandte Themen