Я пытаюсь выполнить описанную ниже операцию, создав df
с именем event_f
.
Я хочу из detail
df
в качестве критериев фильтрации все event_id
, имеющие type_id == 6
, за исключением тех, которые имеют комбинацию 6 и 3 или 6 и 7.
Примечаниечто могут быть и другие комбинации, но все они должны быть включены.
library(tidyverse)
#> Warning: package 'tidyverse' was built under R version 3.5.3
#> Warning: package 'purrr' was built under R version 3.5.3
event <- tibble(id = c("00_1", "00_2", "00_3", "00_4", "00_5", "00_6", "00_7"),
type_id = c("A", "B", "C", "B", "A", "B", "C"))
detail <- tibble(id = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L),
event_id = c("00_1", "00_1", "00_2", "00_2", "00_3", "00_4", "00_4", "00_5", "00_6", "00_6", "00_7", "00_8"),
type_id = c(3L, 4L, 6L, 7L, 2L, 6L, 3L, 2L, 6L, 5L, 2L, 1L))
event_f <- event %>%
semi_join(detail %>% filter(event_id %in% event$id,
type_id == 6,
type_id != (7 | 3)), by = c("id" = "event_id"))
Создано в 2019-04-01 пакетом представлением (v0.2.1)
Я хотел бы иметь df с одной строкой: id = "00_6"
и type_id = "B"
.Я полагаю, проблема в последних двух filter()
операциях, но не знаете, как их объединить?