使用dplyr与tibble实现基于列值的条件求和合并两行操作
解决代码
library(tidyverse) # 构造测试数据,设置随机种子保证结果可复现 set.seed(123) data <- tibble(Field = rep(c("foo", "bar"), each=4), Item = rep(c("a", "b", "c", "d"), 2), Value = runif(8)) # 核心处理逻辑 result <- data %>% group_by(Field) %>% mutate(Value = ifelse(Item == "b", Value + Value[Item == "a"], Value)) %>% filter(Item != "a") %>% ungroup()
逻辑说明
- 先按
Field分组,保证两个分组的操作互不干扰 mutate阶段仅修改Item为b的行:取当前分组内Item为a的Value值叠加到原有b的Value上,其余Item的数值保持不变- 过滤掉所有
Item为a的行,最后用ungroup解除分组,避免后续操作受分组状态影响
内容的提问来源于stack exchange,提问作者ambaraba
相关产品推荐
相关产品推荐

