如何在 R 中执行 vlookup

how to do vlookup in R

提问人:Seyma Kalay 提问时间:5/5/2023 更新时间:5/5/2023 访问量:38

问:

我有一个如下所示的数据集

  first_column <- c("value_1", "value_2", "value_3")
second_column <- c("keep", "remove", "remove")

main.df <- data.frame(first_column, second_column); main.df

first_column second_column
1      value_1          keep
2      value_2        remove
3      value_3        remove

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);  vlookupdf 
first_column column1 column2
1      value_1      si       5
2      value_2      no       2
3      value_3      na       3

我想从 if is eather no 或 na 中删除行main.dfvlookupdf column1

预期答案来自main.df

first_column second_column
1      value_1          keep

提前非常感谢。

r dplyr tidyr 数据操作 整洁

评论


答:

2赞 Quinten 5/5/2023 #1

你可以根据你的条件来计算你的数据帧,如下所示:left_joinfilter

library(dplyr)
main.df |>
  left_join(vlookupdf, by = 'first_column') |>
  filter(!(column1 %in% c("no", 'na'))) |>
  select(first_column, second_column) # if necessary
#>   first_column second_column
#> 1      value_1          keep

创建于 2023-05-05 使用 reprex v2.0.2

2赞 jpsmith 5/5/2023 #2

在基础 R 中,一种方法被否定:match%in%

main.df[match(vlookupdf[!(vlookupdf$column1 %in% c("no", "na")), "first_column"], main.df$first_column),]

输出

#  first_column second_column
# 1      value_1          keep