【发布时间】:2021-09-24 15:21:51
【问题描述】:
帧 df1 和 df2。我想将来自 df2 数据框的版本列添加到 df1 中。条件是df1的Date列在df2.Date1和df2.Date之间,相应带上对应的版本。
例如df1的第一个日期是2020-03-25,它在2020-01-01和2020-03-25之间,所以对应的版本是CZ01。感谢您的帮助。
我的 df1
library(dplyr)
library(data.table)
set.seed(1);vec1 <- sample(seq(as.Date('2020-01-01'), as.Date('2020-12-31'), by="day"), 10)
set.seed(2);vec2 <- sample(seq(as.Date('2020-01-01'), as.Date('2020-12-31'), by="day"), 5)
df1 <- data.frame(ID = c(rep(1, 10),rep(2, 5)), Date = c(vec1, vec2)) %>%
arrange(ID, Date)
ID Date
1 1 2020-03-25
2 1 2020-05-08
3 1 2020-06-15
4 1 2020-07-05
5 1 2020-09-26
6 1 2020-10-03
7 1 2020-10-25
8 1 2020-11-02
9 1 2020-11-19
10 1 2020-11-25
11 2 2020-07-16
12 2 2020-09-18
13 2 2020-09-29
14 2 2020-12-06
15 2 2020-12-14
我的 df2
df2 <- data.frame(ID = c(1,1,1,2,2), Version = c('CZ01','CZ02','CZ03','BX01','BX02'),
Date1 = as.Date(c('2020-01-01','2020-03-25','2020-07-02','2020-07-16','2020-10-31')),
Date2 = as.Date(c('2020-03-25','2020-07-02','2020-12-31','2020-10-31','2020-12-31')))
df2
ID Version Date1 Date2
1 1 CZ01 2020-01-01 2020-03-25
2 1 CZ02 2020-03-25 2020-07-02
3 1 CZ03 2020-07-02 2020-12-31
4 2 BX01 2020-07-16 2020-10-31
5 2 BX02 2020-10-31 2020-12-31
预期输出
ID Date Version
1 1 2020-03-25 CZ01
2 1 2020-05-08 CZ02
3 1 2020-06-15 CZ02
4 1 2020-07-05 CZ03
5 1 2020-09-26 CZ03
6 1 2020-10-03 CZ03
7 1 2020-10-25 CZ03
8 1 2020-11-02 CZ03
9 1 2020-11-19 CZ03
10 1 2020-11-25 CZ03
11 2 2020-07-16 BX01
12 2 2020-09-18 BX01
13 2 2020-09-29 BX01
14 2 2020-12-06 BX02
15 2 2020-12-14 BX02
【问题讨论】:
标签: r