如何在R语言中对单元格内空格分隔的重复值去重?
解决R语言中data.frame字符串列内重复值去重问题
你可以通过以下两种简洁的方式实现对high_test列每个单元格内重复数值的去重:
方法一:基础R原生实现
借助字符串拆分、去重、合并的基础函数组合完成:
df$high_test <- sapply(strsplit(df$high_test, " "), function(x) { paste(unique(x), collapse = " ") })
逻辑说明:
strsplit(df$high_test, " "):将每个单元格的空格分隔字符串拆分为字符向量unique(x):对单个向量内的重复值去重paste(..., collapse = " "):把去重后的向量重新合并为空格分隔的字符串sapply:遍历所有单元格的处理结果,生成新的列值
方法二:tidyverse工具链实现
如果习惯使用tidyverse生态的语法,可结合dplyr与stringr完成:
library(dplyr) library(stringr) df <- df %>% mutate(high_test = str_split(high_test, " ") %>% map(unique) %>% map_chr(paste, collapse = " "))
逻辑说明:
str_split:将字符串列拆分为列表形式的字符向量集合map(unique):对列表中的每个向量逐一去重map_chr(paste, collapse = " "):将去重后的向量合并为字符串,并转换为字符列
运行任意一种方法后,查看结果:
df
输出将匹配你的目标需求:
name high_test 1 Rober 45 78 66 89 2 Kevin 33 51 67 3 Adelaide 71 87 60 98 4 Alexis 28 29
内容的提问来源于stack exchange,提问作者Alegría
相关产品推荐
相关产品推荐

