如何合并tibble同类别行,将多单元格文本合并为单个分隔字符串
解决方案
以下提供三种不同技术栈的实现方式,均可以直接得到你需要的输出结果:
方法1:tidyverse 实现(适配tidy数据生态)
如果你日常使用tidyverse系列工具,用分组聚合加字符串拼接的逻辑即可实现:
library(tidyverse) result <- tab %>% group_by(category) %>% summarise(word = str_c(word, collapse = "; "))
其中collapse = "; "参数指定了拼接字符串时的分隔符,完全匹配你需要的分号加空格的格式。如果不需要保留分组结构,可以在末尾加ungroup()。
方法2:Base R 实现(无需额外加载包)
不需要安装第三方包的场景下,用内置的aggregate函数就可以完成聚合:
result <- aggregate(word ~ category, data = tab, FUN = paste, collapse = "; ") # 如果需要保持tibble格式,可以额外执行转换: result <- as_tibble(result)
方法3:data.table 实现(处理超大数据量性能更优)
如果你的表行数很大,用data.table的实现执行效率会更高:
library(data.table) setDT(tab) result <- tab[, .(word = paste(word, collapse = "; ")), by = category] # 需要转回tibble的话执行as_tibble(result)即可
内容的提问来源于stack exchange,提问作者SebasComm
相关产品推荐
相关产品推荐

