如何在R语言中合并多列内容并去除重复字符串
R语言合并多列字符串并去重的方法
先模拟示例数据(匹配你提供的场景)
df <- data.frame( ID = c(1, 2, 3), Col1 = c("苹果", "香蕉", "橙子"), Col2 = c("苹果", "葡萄", "橙子"), Col3 = c("香蕉", "香蕉", "葡萄"), stringsAsFactors = FALSE )
方法一:Base R 实现
逐行提取多列内容,去重后用指定分隔符合并:
# 新增合并列,自动去重 df$合并结果 <- apply(df[, -1], 1, function(x) { paste(unique(x), collapse = ", ") # 可替换分隔符,比如换成"|" })
方法二:Tidyverse 工具包实现
用dplyr+tidyr的组合,更适合复杂数据场景:
library(dplyr) library(tidyr) df <- df %>% # 将多列转为长格式 pivot_longer(cols = -ID, values_to = "内容") %>% # 按ID和内容去重 distinct(ID, 内容) %>% # 转回宽格式并合并内容 summarise(合并结果 = paste(内容, collapse = ", "), .by = ID) %>% # 合并回原数据框 right_join(df, ., by = "ID")
补充说明
- 如果你的数据里有空字符串或
NA,可以在distinct前加上filter(内容 != "" & !is.na(内容))过滤无效值 - 可根据需求修改
paste里的collapse参数,调整合并后的分隔符
内容的提问来源于stack exchange,提问作者ghgh
相关产品推荐
相关产品推荐

