在R中如何将count列值大于n的行的value求和合并为一行
方法1:基础R实现
首先定义阈值n,拆分原数据后拼接汇总行即可,注意要把数值型的count列转成字符型,避免和带特殊符号的汇总行count值类型冲突:
n <- 3 # 提取count小于等于n的部分 df_part1 <- df[df$count <= n, ] # 计算count大于n的value总和 sum_val <- sum(df$value[df$count > n]) # 拼接得到最终结果 df_res <- rbind( df_part1, data.frame(count = paste0(">", n), value = sum_val) )
运行结果如下:
count value 1 0 100 2 1 50 3 2 60 4 3 70 5 >3 16
方法2:dplyr实现
适合tidyverse技术栈场景,通过分组汇总实现需求:
library(dplyr) n <- 3 df_res <- df %>% # 对count列做归类,大于n的统一替换为>n格式的字符串 mutate(count = if_else(count > n, paste0(">", n), as.character(count))) %>% # 按count分组求和 group_by(count) %>% summarise(value = sum(value), .groups = "drop") %>% # 调整排序,保证汇总行在最后 arrange(ifelse(count == paste0(">", n), Inf, as.integer(count)))
内容的提问来源于stack exchange,提问作者Algorithman
相关产品推荐
相关产品推荐

