Используйте dplyr в R, чтобы идентифицировать любой экземпляр, один столбец соответствует любой строке в другом столбце, сгруппированный по id - PullRequest
2 голосов
/ 27 февраля 2020

У меня есть набор данных с двумя датами (дата A и дата B). Я хочу найти строки, где дата A соответствует любой дате B в той же переменной id.

id    date A        date B        
1     01/20/2018    02/25/2019
1     01/20/2018    01/20/2018
2     03/18/2017    03/20/2019
2     03/18/2017    04/19/2018  
2     03/20/2019    03/20/2019
2     03/20/2019    04/19/2018 
3     08/01/2019    09/06/2019

Я хочу, чтобы на выходе получилась логическая переменная 'date_match':

id    date A        date B       date_match       
1     01/20/2018    02/25/2019   TRUE
1     01/20/2018    01/20/2018   TRUE
2     03/18/2017    03/20/2019   FALSE
2     03/18/2017    04/19/2018   FALSE
2     03/20/2019    03/20/2019   TRUE
2     03/20/2019    04/19/2018   TRUE 
3     08/01/2019    09/06/2019   FALSE

Спасибо!

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020

Используя dplyr, вы можете попробовать:

df %>%
 group_by(id) %>%
 mutate(date_match = date_A %in% date_B)

     id date_A     date_B     date_match
  <int> <chr>      <chr>      <lgl>     
1     1 01/20/2018 02/25/2019 TRUE      
2     1 01/20/2018 01/20/2018 TRUE      
3     2 03/18/2017 03/20/2019 FALSE     
4     2 03/18/2017 04/19/2018 FALSE     
5     2 03/20/2019 03/20/2019 TRUE      
6     2 03/20/2019 04/19/2018 TRUE      
7     3 08/01/2019 09/06/2019 FALSE
0 голосов
/ 27 февраля 2020

С data.table

library(data.table)
setDT(df)[, date_match := date_A %chin% date_B, id]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...