假设我们有以下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做到这一点?
答案 0 :(得分:3)
尝试
library(dplyr)
df %>%
group_by(b) %>%
mutate(d= a-mean(a))