在R中使用向量方法,根据从其他列派生的周期为列赋值
我有这样一个df:在R中使用向量方法,根据从其他列派生的周期为列赋值,r,R,我有这样一个df: x <- data.frame("date1" = c("2018-09-12","2018-09-18", "2019-06-23"), "date2" = c("2018-09-10","2018-09-13","2018-12-12")) > x date1 date2 1 2
x <- data.frame("date1" = c("2018-09-12","2018-09-18", "2019-06-23"), "date2" = c("2018-09-10","2018-09-13","2018-12-12"))
> x
date1 date2
1 2018-09-12 2018-09-10
2 2018-09-18 2018-09-13
3 2019-06-23 2018-12-12
有没有一种方法可以在R中以向量的形式实现呢。
谢谢你能试试这个吗
periods = as.Date(sort(unique(x$date1)))
x$period = apply(as.data.frame(x$date2), 1, function(x){
findInterval(as.Date(x), periods)
})
你能试试这个吗
periods = as.Date(sort(unique(x$date1)))
x$period = apply(as.data.frame(x$date2), 1, function(x){
findInterval(as.Date(x), periods)
})
您可以使用
date1
中的日期在date2
findInterval(x$date2, x$date1)
#[1] 0 1 2
您可以使用
date1
中的日期在date2
findInterval(x$date2, x$date1)
#[1] 0 1 2
期望值是否正确<代码>c(0,未列出)映射(函数(u,v)和(x$date2>=u&x$date2@akrun我给出了预期值只是为了给出一个想法。基本上,我必须在该列上做一个“唯一”来推导时间段,然后根据date2值将这些时间段分配给每行。@akrun您的输出是正确的,但最后一个值应该是2。第二个时间段从2018-09-18开始到2019-06-23,并且2018-12-12处于这一时期,因此应该得到一个值2。这是预期的正确值吗?
c(0,未列出(Map)(函数(u,v)和(x$date2>=u&x$date2@akrun我给出了预期值只是为了给出一个想法。基本上,我必须在该列上做一个“唯一”来推导时间段,然后根据date2值将这些时间段分配给每行。@akrun您的输出是正确的,但最后一个值应该是2。第二个时间段从2018-09-18开始到2019-06-23,并且2018-12-12处于这一时期,因此应该得到一个值2。谢谢