Пересекать и мутировать - PullRequest
       1

Пересекать и мутировать

0 голосов
/ 01 ноября 2019

У меня есть два тибля a и b.

. Я хотел бы найти общие значения по обоим тиблям, а затем изменить столбец a, чтобы обозначить совпадение.

library(tidyverse)

a<-as_tibble(c("cat", "dog", "bird"))
b<-as_tibble(c("sheep", "cow", "dog", "pig", "cat", "mouse"))

dplyr::intersect(a, b)

Ожидаемый результат:

  value common
  <chr> <dbl>
1 cat     1
2 dog     1
3 bird    0

Финальный mutate уклонение ускользает от меня, любая помощь приветствуется.

1 Ответ

1 голос
/ 02 ноября 2019

Проще просто проверить, есть ли общность в мутации:

a %>%
  mutate(common = ifelse(value %in% b$value))

Или в объединении:

inner_join(
  x = a,
  y = b %>% mutate(common = 1),
  by = "value") %>%
replace_na(list(common = 0))

С dplyr работать с одним тиблом намного проще, чем с кратнымипоэтому первым шагом должно стать их объединение, а не создание нового. :) Я не думаю, что пересечение - правильный инструмент для работы в этом случае. Однако, если вам нужно по какой-либо причине фактически пересекаться, вы можете просто использовать любой из вышеперечисленных методов, чтобы аннотировать / присоединиться к вашему элементу a.

(Кроме того, вы, вероятно, увидите предупреждение об использовании as_tibble ввекторы, поэтому вы должны переключиться на tibble () или enframe (), чтобы сделать ваш код более перспективным.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...