gpt4 book ai didi

日期和向量的 R 序列

转载 作者:行者123 更新时间:2023-12-02 17:31:56 30 4
gpt4 key购买 nike

我想恢复两个向量的第一个日期和相同向量的第二个日期之间的日期序列,....

这是一个例子:

dates1 = as.Date(c('2015-10-01', '2015-03-27', '2015-05-20'))
dates2 = as.Date(c('2015-10-03', '2015-03-28', '2015-05-22'))

我想恢复这个

'2015-10-01', '2015-10-02', '2015-10-03',  '2015-03-27' '2015-03-28',
'2015-05-20' '2015-05-21' '2015-05-22'

最好的方法是什么?

最佳答案

我们可以使用 Map 来循环遍历 start ('dates1') 和 end dates ('dates2') 对应的元素,使用 sequnlist list 输出来获取日期的 vector

lst <- Map(seq, dates1, dates2, MoreArgs=list(by='1 day'))
as.Date(unlist(lst), origin='1970-01-01')
#[1] "2015-10-01" "2015-10-02" "2015-10-03" "2015-03-27" "2015-03-28"
#[6] "2015-05-20" "2015-05-21" "2015-05-22"

我们可以使用 do.call(c 而不是 unlist,正如评论中提到的 @bgoldst 避免将日期强制转换为“数字”值

 do.call('c', lst)
#[1] "2015-10-01" "2015-10-02" "2015-10-03" "2015-03-27" "2015-03-28"
#[6] "2015-05-20" "2015-05-21" "2015-05-22"

或者另一种选择是使用 data.table,我们在其中创建一个以“dates1”和“dates2”作为列的 data.table,使用 行号 作为分组变量,我们得到 'dates1' 和 'dates2' 之间的日期序列,并提取 'V1' 列以获得日期向量。

library(data.table)
DT <- data.table(dates1, dates2)
DT[,seq(dates1, dates2, by= '1 day') , by = 1:nrow(DT)]$V1
#[1] "2015-10-01" "2015-10-02" "2015-10-03" "2015-03-27" "2015-03-28"
#[6] "2015-05-20" "2015-05-21" "2015-05-22"

关于日期和向量的 R 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31965777/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com