如何使用group_by(dplyr)中已停用的值创建列

时间:2015-05-06 13:40:06

标签: r dplyr

假设我们有以下data.frame:

df <- data.frame( a=c( 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3),
                  b=c('x','x','y','y','v','v','w','w','x','x','y','y')
                 )

我想要做的是创建一个列&#39; d&#39;这样d将是对每个组的操作添加到a的值。例如,假设&#39; d&#39;将等于&#39; a&#39;的每个值。减去&#39; a&#39;的平均值。对于每个小组。我们有:

new_df <- data.frame(a=c( 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3),
                     b=c('x','x','y','y','v','v','w','w','x','x','y','y'),
                     d=c(-1 , -1, -1, -1, 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1)

有没有办法用dplyr做到这一点?

1 个答案:

答案 0 :(得分:3)

尝试

library(dplyr)
df %>%
   group_by(b) %>% 
   mutate(d= a-mean(a))