这就是你想要的吗?或者你的预期产出是什么样的?在下面的示例中
id == my.df$id3
如果
my.df$id3
存在于
dat$id
.由于是这种情况,此筛选器只保留一行原始数据。
library(dplyr)
dat <- data.frame(id = c(0, 0, 01, 02, 03, 011, 012, 013, 0111, 0112, 0113),
x1 = rnorm(11),
x2 = rnorm(11),
x3 = rnorm(11))
my.df <- data.frame(id = 0, id1 = 01, id2 = 011, id3 = 0111, some.column = 'xyz')
dat %>%
dplyr::filter(if (my.df$id3 %in% id) {
id == my.df$id3
} else if (my.df$id2 %in% id) {
id == my.df$id2
} else if (my.df$id1 %in% id) {
id == my.df$id1 })
#> id x1 x2 x3
#> 1 111 0.3771992 -0.5073165 -0.3555985
于2020年7月13日由
reprex package
(v0.3.0)