R语言分组汇总数据:保留指定分组的原始数值
解决方案
针对你的需求,我们可以将数据拆分为两部分分别处理后合并结果,具体步骤如下:
- 对
name不等于"c"的行,按name和type分组求和value列; - 对
name等于"c"的行,直接保留原始value值并重命名为sum_value; - 合并两部分数据并按
name和type排序。
具体R代码如下:
# 加载dplyr包(若未安装先执行 install.packages("dplyr")) library(dplyr) # 原始数据框 df <- data.frame(name= c( "a","a","b","b","b","c","c","c"), type= c("imp","imp","imp","imp","exp","imp","imp","imp"), value= c(1,2,2,2,6,3,4,5)) # 处理非"c"的分组求和 non_c_data <- df %>% filter(name != "c") %>% group_by(name, type) %>% summarise(sum_value = sum(value), .groups = "drop") # 处理"c"的保留原始值 c_data <- df %>% filter(name == "c") %>% rename(sum_value = value) # 合并并排序得到目标数据框 new_df <- bind_rows(non_c_data, c_data) %>% arrange(name, type) # 查看结果 new_df
运行后得到的new_df与你提供的目标数据框完全一致:
> new_df name type sum_value 1 a imp 3 2 b imp 4 3 b exp 6 4 c imp 3 5 c imp 4 6 c imp 5
内容的提问来源于stack exchange,提问作者pomatomus
相关产品推荐
相关产品推荐

