首页 > 解决方案 > 将向量“日期”合并到 R 中的数据框中

问题描述

我创建了一个从 2015-11-29 到 2020-09-05 的日期向量,如下所示:

newdates_startweek <- seq(as.Date('2015-11-29'),as.Date('2020-09-05'),by = 7)

现在我想将这个“newdates_startweek”合并到我的原始数据集中:

region   id      name        date       appointment
   A      1    clinic1    2015-11-29        1      
   A      1    clinic1    2015-12-08        1      
   A      1    clinic1    2020-08-17        1      
   A      1    clinic1    2020-08-19        1      
   A      1    clinic1    2020-09-03        1      

原始数据集代码:

region <- c("A","A","A","A", "A")
id <- c(1,1,1,1,1)
name <- c("clinic1","clinic1","clinic1","clinic1","clinic1")
date <- c(as.Date('2015-11-29'), as.Date("2015-12-08"), as.Date("2020-08-17"), as.Date('2020-08-19'), as.Date('2020-09-03'))
appointment <- c(1,1,1,1,1)

df <- data.frame(region, id, name, date, appointment)

要获得这个:

region   id      name        date       appointment   newdates_startweek
   A      1    clinic1    2015-11-29        1         2015-11-29
   A      1    clinic1    2015-12-08        1         2015-12-06
   A      1    clinic1        NA            0         2015-12-13
   A      1    clinic1        NA            0         2015-12-20
   A      1    clinic1        NA            0         2015-12-27
   A      1    clinic1        NA            0         2016-01-03
                                ....
   A      1    clinic1    2020-08-17        1         2020-08-16
   A      1    clinic1    2020-08-19        1         2020-08-16
   A      1    clinic1        NA            0         2020-08-23
   A      1    clinic1    2020-09-03        1         2020-08-30

你知道一个快速的方法来做到这一点吗?

标签: rdatejoinmerge

解决方案


这个回答:

> df %>% mutate(date = as.character(date)) %>% right_join(as.data.frame(as.character(newdates_startweek)) %>% setNames('newdates_startweek'), by = c('date' ='newdates_startweek' ), keep = 1) 
    region id    name       date appointment newdates_startweek
1        A  1 clinic1 2015-11-29           1         2015-11-29
2     <NA> NA    <NA>       <NA>          NA         2015-12-06
3     <NA> NA    <NA>       <NA>          NA         2015-12-13
4     <NA> NA    <NA>       <NA>          NA         2015-12-20
5     <NA> NA    <NA>       <NA>          NA         2015-12-27
6     <NA> NA    <NA>       <NA>          NA         2016-01-03
..
..

推荐阅读