如何在R中实现类VLOOKUP操作并筛选main.df数据行
在R中实现类VLOOKUP关联并过滤行
先确认数据集
首先还原你提供的两个数据集:
# 构建main.df first_column <- c("value_1", "value_2", "value_3") second_column <- c("keep", "remove", "remove") main.df <- data.frame(first_column, second_column) # 构建vlookupdf first_column <- c("value_1", "value_2", "value_3") column1 <- c("si", "no", "na") column2 <- c(5, 2, 3) vlookupdf <- data.frame(first_column, column1, column2)
方法1:Base R 原生实现
通过merge()完成表关联,再过滤目标行:
# 按first_column关联两个表 merged_data <- merge(main.df, vlookupdf, by = "first_column") # 过滤掉column1为"no"或"na"的行,保留原main.df的列 final_result <- merged_data[!merged_data$column1 %in% c("no", "na"), c("first_column", "second_column")] # 查看结果 final_result
输出结果:
first_column second_column 1 value_1 keep
方法2:tidyverse/dplyr 语法实现
如果习惯使用tidyverse生态,步骤更直观:
library(dplyr) final_result <- main.df %>% inner_join(vlookupdf, by = "first_column") %>% # 关联两个表 filter(!column1 %in% c("no", "na")) %>% # 过滤指定值的行 select(first_column, second_column) # 保留原main.df的列 # 查看结果 final_result
两种方法的核心逻辑一致:先通过first_column完成类VLOOKUP的关联匹配,再筛选出符合要求的行,最后保留原数据集的列。
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

