简体   繁体   English

如何使用从group_by(dplyr)淘汰的值创建列

[英]How to create a column with values retired from a group_by (dplyr)

Suppose we have the following data.frame: 假设我们有以下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')
                 )

What I want to do is to create a column 'd' such that d would be a operation on each group added to the value of a. 我想做的是创建一个列“ d”,使d是对添加到a的值的每个组的操作。 For example, suppose 'd' would be equal to each value of 'a' minus the mean of 'a' for each group. 例如,假设“ d”等于“ a”的每个值减去每个组的“ a”的平均值。 We'd have: 我们有:

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)

Is there a way to do that using dplyr? 有没有办法使用dplyr做到这一点?

Try 尝试

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM