dplyr实战:按hands列匹配行求和新增列并保留原数据框结构
基于dplyr的实现代码
核心思路是按hands列分组后用mutate生成新列,分组状态下的mutate不会压缩原有行数,会将分组统计结果回填到该组所有行,完全保留原数据结构:
# 加载dplyr包 library(dplyr) # 核心操作 fig <- fig %>% group_by(hands) %>% # 按hands列分组 mutate(new = sum(n)) %>% # 计算分组内n列的总和,赋值给新列new ungroup() # 取消分组,避免后续操作受残留分组状态影响
输出验证
运行代码后得到的结果完全符合预期:
> fig # A tibble: 8 × 4 hands imp_spe n new <chr> <dbl> <int> <int> 1 A 0 39 71 2 A 1 32 71 3 B 0 3 5 4 B 1 2 5 5 C 0 115 139 6 C 1 24 139 7 D 0 11 14 8 D 1 3 14
简洁写法(适配dplyr 1.0.0及以上版本)
可以用.by参数省略显式分组和解组的步骤,代码更精简:
fig <- fig %>% mutate(new = sum(n), .by = hands)
内容的提问来源于stack exchange,提问作者cmirian
相关产品推荐
相关产品推荐

