日期和向量的 R 序列

标签 r date

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

这是一个例子:

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/

相关文章:

r - 在 R 中使用 LFE (FELM) 的固定效应回归常数/截距

java - Scala 将很长的字符串解析为日期

java - 将毫秒转换为日期和时间并按区域设置格式

PHP 查找最接近时间线周期的日期

r - OSX 安装 Rsymphony - 链接 header 和库

r - 如何保留第一个字符但删除 R 中空格之前的所有其他字符?

r - 以给定的概率生成随机数

date - 在erlang中将时间戳转换为日期时间

java - 解析 java.text.SimpleDateFormat 时获取 java.lang.IllegalArgumentException : Illegal pattern character 'o' ?

r - knitr 中的 fig.env 有问题吗?