2015-04-11 2 views
0

Каков эффективный/предпочтительный способ группового среднего центрирования с dplyr, то есть взять каждый элемент группы (mutate) и выполнить операцию над ним и сводный stat (summarize) для этой группы. Вот как можно сделать группу означает, центрирования на mtcars с использованием базового R:dplyr: групповое среднее центрирование (мутация + суммирование)

do.call(rbind, lapply(split(mtcars, mtcars$cyl), function(x){ 
    x[["cent"]] <- x$mpg - mean(x$mpg) 
    x 
})) 
+0

Это работает, даже не попробовать, потому что я не знаю, что вы можете использовать 'group_by' на 'mutate'. Хорошее спасибо. –

ответ

2

Вы можете попробовать

library(dplyr) 
mtcars %>% 
     add_rownames()%>% #if the rownames are needed as a column 
     group_by(cyl) %>% 
     mutate(cent= mpg-mean(mpg))