如何在R语言中按分隔符拆分数据框列元素并保留唯一值
在R中处理数据框annotation列的去重合并
先构建你的示例数据框:
df <- data.frame( sampleID = c("A1", "A2", "A3", "A4"), annotation = c("orange; apple", "apple; apple", "apple; orange; orange; grapes; apple", "grapes; orange"), stringsAsFactors = FALSE )
下面提供两种可行的处理方法:
方法一:用tidyverse工具集处理
需要加载dplyr和stringr包,步骤是拆分字符串、去重、重新合并:
library(dplyr) library(stringr) df_processed <- df %>% mutate( annotation = str_split(annotation, ";\\s*") %>% # 按分号+可选空格拆分 lapply(unique) %>% # 对每个拆分后的元素列表去重 sapply(paste, collapse = "; ") # 重新拼接成带分号的字符串 )
方法二:用基础R实现
不需要额外加载包,直接用sapply和strsplit组合处理:
df_processed_base <- df df_processed_base$annotation <- sapply(strsplit(df$annotation, ";\\s*"), function(x) { paste(unique(x), collapse = "; ") })
处理后的结果如下:
> df_processed sampleID annotation 1 A1 orange; apple 2 A2 apple 3 A3 apple; orange; grapes 4 A4 grapes; orange
内容的提问来源于stack exchange,提问作者biobudhan
相关产品推荐
相关产品推荐

