2017-04-06 113 views
0

我正在計算居中變量後的平均值。通過居中它意味着從其原始變量中減去該變量的平均值。我正在使用dplyr包。我可以通過mutate()函數爲一個變量做到這一點。我怎樣才能使用mutate爲多個變量做同樣的事情?多個變量的自定義函數

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

你可以用'mutate_all' –

+0

我無法在功能擺脫X1的。提前致謝! –

+0

不知道你是否給出了一個假的例子,但是mean(x-mean(x))'顯然是0(不管'x'),並且只能爲浮點精度給出一個不同的值。 – nicola

回答

0

希望這是你在找什麼:(添加na.rm = TRUE需要內部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)))