R语言如何提取数据框列唯一值并剔除指定向量中的元素
提取数据框指定列唯一值并剔除指定取值的R实现
需求
提取数据框area_df中all_areas列的唯一值,剔除向量area1、area2中包含的所有取值,最终预期返回结果为"town"、"city"、"village"。
预置测试代码
set.seed(1) area_df = data.frame(all_areas = sample(rep(c("foo", "bar", "big", "small", "town", "city", "village"),5),20), number = sample(1:100, 20)) area1 = c("foo", "bar") area2 = c("big", "small")
实现方式
方法1:Base R 原生实现(无需依赖第三方包)
直接用unique()取目标列的唯一值,再用setdiff()和待排除值集合做差集即可:
# 合并所有待排除的取值 exclude_set <- c(area1, area2) # 计算差集得到结果 result <- setdiff(unique(area_df$all_areas), exclude_set)
运行后输出result即可得到预期结果:
> result [1] "town" "city" "village"
方法2:dplyr 语法实现
如果日常使用tidyverse生态的工具链,可以用以下写法,返回结果完全一致:
library(dplyr) result <- area_df %>% distinct(all_areas) %>% filter(!all_areas %in% c(area1, area2)) %>% pull(all_areas)
内容的提问来源于stack exchange,提问作者Mark Davies
相关产品推荐
相关产品推荐

