【发布时间】:2020-07-12 22:23:52
【问题描述】:
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 的行:
如果my.df$id3 存在于dat$id 中,则过滤dat$id == my.df$id3,否则
检查my.df$id2 是否存在并过滤dat$id == my.df$id2,如果不存在,
检查my.df$id1 是否存在并过滤dat$id == my.df$id1,如果不存在
只需过滤dat$id == my.df$id
dat %>%
dplyr::filter(ifelse(my.df$id3 %in% id, id == my.df$id3,
ifelse(my.df$id2 %in% id, id == my.df$id2,
ifelse(my.df$id1 %in% id, id == my.df$id1, id == my.df$id))))
它返回空行。
【问题讨论】: