如何用dplyr为数据集添加基于v1分组的v2求和列tc?
使用dplyr为分组添加求和列的实现方法
示例数据集
首先构造示例数据集testDF:
testDF <- data.frame(v1 = rep(c('a', 'b', 'c', 'd', 'e', 'f'), 2), v2 = rep(c(1,0),6))
原数据集内容如下:
v1 v2 1 a 1 2 b 0 3 c 1 4 d 0 5 e 1 6 f 0 7 a 1 8 b 0 9 c 1 10 d 0 11 e 1 12 f 0
需求说明
需要按v1字段分组,新增一列tc,存储每组v2的求和结果,最终输出如下:
v1 v2 tc 1 a 1 2 2 b 0 0 3 c 1 2 4 d 0 0 5 e 1 2 6 f 0 0 7 a 1 2 8 b 0 0 9 c 1 2 10 d 0 0 11 e 1 2
解决方案(dplyr实现)
可以使用dplyr的分组+新增列操作完成需求:
library(dplyr) testDF <- testDF %>% group_by(v1) %>% mutate(tc = sum(v2)) %>% ungroup()
代码解释
group_by(v1):按照v1的取值对数据集进行分组mutate(tc = sum(v2)):在每个分组内计算v2的总和,并将结果作为新列tc添加到该分组的每一行ungroup():取消数据集的分组状态,避免后续操作受分组规则影响(属于推荐的规范操作)
运行上述代码后,testDF即可得到目标结果。
内容的提问来源于stack exchange,提问作者12666727b9
相关产品推荐
相关产品推荐

