R语言如何高效提取数据框6列中的所有唯一名称
问题原因
你使用的unique(Names[1:3])默认是对数据框的行组合进行去重,仅会移除指定列字段值完全一致的重复行,不会把多列的所有值合并后做全局去重,所以返回的还是接近原数据的表格。
解决方案
方案1:获取多列所有值的全局唯一列表
用unlist()把指定多列的内容平铺为单个向量后再做去重即可,针对6列的需求代码如下:
# 获取1-6列所有值的全局去重结果 unique(unlist(Names[1:6])) # 如果需要排除结果中的NA值,加参数即可 unique(unlist(Names[1:6]), useNA = "no")
方案2:批量对每列单独去重,无需编写多条命令
用lapply()批量遍历目标列执行去重操作,返回的列表中每个元素对应一列的去重结果:
# 批量对1-6列分别做列内去重 col_unique_res <- lapply(Names[1:6], unique) # 可以直接查看某一列的去重结果,比如查看第2列 col_unique_res[[2]]
验证示例
你可以用测试数据运行确认效果:
# 构造测试数据框 Names <- data.frame( col1 = c("张三","李四","王五","张三"), col2 = c("李四","王五","赵六","王五"), col3 = c("王五","赵六","孙七","赵六") ) # 运行全局去重代码 unique(unlist(Names[1:3])) # 返回结果:"张三" "李四" "王五" "赵六" "孙七"
内容的提问来源于stack exchange,提问作者JohnC3na
相关产品推荐
相关产品推荐

