首页 > 解决方案 > 基于可能值的向量/列表在 tidyverse 中进行过滤

问题描述

我想根据应该标识唯一行的两列上的条件选择数据框的行。在下面的具体示例中,我想 id=1,2,3...使用向量中指定的特定 mtry 值进行选择,即对于 id=1,我只想要第一行mtry=3,因为id=2我想要mtry=5

我尝试使用group_by和使用filter例如

filter(df, (mtry,id) %in% c([3,1],[5,2],[3,3]))

但这给出了一个错误

错误:意外的“,”在 .

这样做的tidyverse方法是什么?

在此处输入图像描述

标签: rdataframetidyverse

解决方案


您可以使用内部连接来执行这种过滤器

library(dplyr)

df %>% 
  inner_join(tibble(mtry = c(3, 5, 3), id = c(1, 2, 3)))

例子:

set.seed(100)
df <- data.frame(mtry = sample(1:3, 100, T), id = sample(1:5, 100, T))

df %>% 
  inner_join(tibble(mtry = c(3, 5, 3), id = c(1, 2, 3)))
# Joining, by = c("mtry", "id")
#    mtry id
# 1     3  1
# 2     3  3
# 3     3  3
# 4     3  3
# 5     3  1
# 6     3  3
# 7     3  1
# 8     3  1
# 9     3  1
# 10    3  3
# 11    3  1
# 12    3  3
# 13    3  1

推荐阅读