R语言筛选数据框匹配指定列唯一值行遇空结果的解决方法
问题原因及解决方法
问题根源
你得到空结果是因为unique_vector并不是向量,而是一个单列数据框。%in%运算符需要的是向量类型的匹配对象,用数据框去匹配自然找不到对应值。
快捷解决方法
方法1:直接生成向量格式的唯一值
修改unique_vector的生成代码,直接提取col1列的向量并去重:
unique_vector <- unique(my_data_1$col1) output <- my_data[my_data$col1 %in% unique_vector, ]
运行后会得到正确结果:
col1 id 1 abc 1 4 eee 4 5 eee 5
方法2:将已有的单列数据框转为向量
如果已经生成了unique_vector这个数据框,直接提取其中的列转为向量即可:
unique_vec <- unique_vector$col1 output <- my_data[my_data$col1 %in% unique_vec, ]
方法3:用tidyverse工具链实现(更简洁)
如果你习惯用dplyr,可以这样写:
library(dplyr) output <- my_data %>% filter(col1 %in% unique(my_data_1$col1))
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

