2017-04-06 16 views
0

変数をセンタリングした後の平均を計算しています。センタリングすることは、元の変数から変数の平均を差し引くことを意味します。私はdplyrパッケージを使用しています。私はmutate()関数を介して1つの変数のためにそれを行うことができます。 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))) 
関連する問題