R语言如何按数据框分类列将字符型描述聚合为列表格式
R语言按Category分组聚合description的实现方法
第一步:构造可复现的示例数据
先运行以下代码生成和需求一致的测试数据框:
df <- data.frame( Category = c("Analysis", "Hybrid", "Other", "Analysis", "Other", "Hybrid"), description = c("This is one", "This is two", "This is three", "This is four", "This is five", "This is six"), stringsAsFactors = FALSE # 避免旧版本R自动将字符转为因子导致报错 )
方法1:使用R基础语法(无需安装额外包)
适合刚接触R、还未安装第三方包的场景:
# 按Category拆分description列 desc_grouped <- split(df$description, df$Category) # 构造最终聚合结果,I()用于保留列表/向量结构,避免拆分为多列 result <- data.frame( Category = names(desc_grouped), description = I(desc_grouped) )
运行result即可输出聚合后的结果,同组文本会自动以向量形式(即示例中的括号包裹格式)显示。
方法2:使用dplyr包(更符合批量数据处理逻辑)
如果已经安装dplyr包(可通过install.packages("dplyr")安装),可以用管道操作简化代码:
library(dplyr) result <- df %>% group_by(Category) %>% # 按Category列分组 summarise(description = list(description)) # 将同组的description打包为列表
自定义:完全匹配示例的带引号显示格式
如果需要让输出的description完全和示例一致(即每个文本都带双引号、整体用括号包裹),可在聚合后加一步格式转换:
# 适配基础R或dplyr生成的result,将列表内容转换为指定格式的字符串 result$description <- sapply(result$description, function(x) { paste0("(", paste0('"', x, '"', collapse = ", "), ")") })
注:默认会按照原始数据中文本出现的先后顺序排列同组内容,若需要调整顺序,可在分组前对数据框按指定规则排序后再执行聚合操作。
内容的提问来源于stack exchange,提问作者Uday Sharma
相关产品推荐
相关产品推荐

