R语言如何合并字符型数据框中相同标题对应的多行文本内容
解决方法
你要实现的是按Title字段分组后拼接同组的Content文本,不需要用到数值计算类的聚合函数,直接用字符串拼接的聚合逻辑就可以实现,以下是两种常用的可行方案:
方案1:tidyverse生态实现(代码可读性更高)
先安装并加载对应的包,用dplyr分组+stringr的字符串拼接函数实现:
# 若未安装依赖先执行 install.packages("tidyverse") library(tidyverse) # 按标题分组拼接内容,同组内容默认用空格分隔 df_merged <- df1 %>% group_by(Title) %>% # 如果需要换行分隔不同段落,把collapse参数的空格改成"\n"即可 # 存在NA内容的话可以加na.rm = TRUE参数避免结果变成NA summarise(full_content = str_c(Content, collapse = " ", na.rm = TRUE)) %>% ungroup()
如果需要提前过滤掉示例里的广告类无效内容,可以在分组前增加过滤步骤:
df_merged_clean <- df1 %>% # 过滤掉不需要的广告和无关内容 filter(!Content %in% c( "Don't miss a thing by getting the Daily Star's biggest headlines straight to your inbox!", "Related content" )) %>% group_by(Title) %>% summarise(full_content = str_c(Content, collapse = " ")) %>% ungroup()
方案2:原生R实现(无需安装第三方包)
用原生的aggregate函数也能实现完全一致的效果:
df_merged <- aggregate(Content ~ Title, data = df1, FUN = function(x) paste(x, collapse = " ", na.rm = TRUE))
两种方案输出的结果都是每个唯一标题对应一行,包含该标题下所有合并后的内容,完全匹配你需要的目标结构。
内容的提问来源于stack exchange,提问作者RodLL
相关产品推荐
相关产品推荐

