如何用R按条件聚合表格行并合并对应列值?
R语言实现按列聚合并合并对应列值的方法
首先先明确你的原始数据结构,可简化为以下代码构建:
df <- data.frame( df = c("A", "B", "A", "C", "A", "D"), number = c("11", "12", "13", "11", "12", "14") )
下面给两种常用的实现方法:
方法一:使用base R的aggregate函数
无需额外安装包,直接用基础函数完成:
df_final_base <- aggregate(number ~ df, data = df, FUN = function(x) paste(x, collapse = "; "))
逻辑:aggregate按df列分组,对每组的number值用paste函数合并,collapse = "; "指定用分号加空格作为分隔符。
方法二:使用dplyr包(tidyverse生态)
如果习惯用tidyverse工具链,这种写法更直观:
# 未安装dplyr的话先运行:install.packages("dplyr") library(dplyr) df_final_dplyr <- df %>% group_by(df) %>% summarise(number = paste(number, collapse = "; "), .groups = "drop")
逻辑:group_by(df)按df列分组,summarise执行合并操作,.groups = "drop"用于取消分组状态,避免后续操作出现分组相关警告。
两种方法得到的结果均与你预期的df_final结构一致,运行后可通过print(df_final_base)或print(df_final_dplyr)查看结果。
内容的提问来源于stack exchange,提问作者Boh
相关产品推荐
相关产品推荐

