2017-02-13 5 views
-1
group=c("A","A","B","A","B","C","C","A") 
y=c(3,4,5,2,1,4,1,2) 
df=data.frame(group,y) 

с помощью aggregate, я могу получить среднее поРасчет группой в один колонке R

aggregate(df$y, list(df$group), mean) 

Но мой вопрос: Как сделать что-то вроде: (y_ij-mean_i) где mean_i средняя для группы i

спасибо.

+2

Я предположил бы, 'у - с (Д.Ф., пр (у, группы))' –

+0

или 'с (Д.Ф., пр (у, группы, FUN = функция (х) {x-mean (x)})) '(=' ave (df $ y, df $ group, FUN = function (x) {x-mean (x)})) – Cath

+0

или с 'dplyr',' df%>% group_by (group)%>% mutate (mean_y = y - mean (y)) ' –

ответ

2

Мы можем использовать ave

with(df, y- ave(y, group))