r - 将向量“日期”合并到 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
你知道一个快速的方法来做到这一点吗?
解决方案
这个回答:
> 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
..
..
推荐阅读
- java - 在jtable的所有行中导入mysql数据库的最后一行(Java Swing)
- html - 如何匹配 ` ` 标记之前的文本然后返回 ` ` 节点?
- cmd - 使用 sendmidi 将 MIDI 发送到 Microsoft GS Wavetable Synth
- tensorflow - 运行预训练的 CNN 时不可调用非类型对象
- high-availability - 我有两个并行的系统,每个系统全年都有 99.9% 的正常运行时间。总体正常运行时间是多少?
- jq - jq没有得到预期的输出
- acumatica - 我们可以根据 Acumatica 中的逻辑更改站点地图名称(屏幕名称)吗
- java - 用Java画圆
- css - 具有可滚动 div 的 CSS,占用 100% 可用高度,但不向正文添加滚动条
- visual-studio-code - 更漂亮的 vscode “r 不是函数”