查找具有匹配日期组件的第一个datetime元素的索引

时间:2019-03-22 09:54:15

标签: r datetime lubridate

我有一系列日期时间值。

library(lubridate)
timestamp <- seq.POSIXt(from=as.POSIXct("2019-01-01 00:00:00"),
    to=as.POSIXct("2019-01-02 23:00:00"), by= '6 hours')
> timestamp
[1] "2019-01-01 00:00:00 EET" "2019-01-01 06:00:00 EET" "2019-01-01 12:00:00 EET"
[4] "2019-01-01 18:00:00 EET" "2019-01-02 00:00:00 EET" "2019-01-02 06:00:00 EET"
[7] "2019-01-02 12:00:00 EET" "2019-01-02 18:00:00 EET"

我想在日期分量与输入日期匹配的向量中找到第一个datetime元素的索引。例如,如果日期为“ 2019-01-02” ,则元素为“ 2019-01-02 00:00:00 EET” ,其索引为 5

在原始数据集中,日期时间之间的间隔不是恒定的,因此一天的第一个元素很容易是“ 2019-01-02 00:00:03 EET”或“ 2019-01-02 00:00:10 EET” ”,找到它们的索引很重要。

到目前为止,所有这些行都给我NA:

firstDatetime = match(date("2019-01-02 12:00:00"),timestamp)
firstDatetime = match(date("2019-01-02"),timestamp)
firstDatetime = match(as_date("2019-01-02"),timestamp)

1 个答案:

答案 0 :(得分:0)

两个对象的类不同

class(as.Date("2019-01-02"))
#[1] "Date"

class(timestamp)
#[1] "POSIXct" "POSIXt"

在所有尝试中,您尝试将match类的对象与Date类的对象

POSIXct转换为“日期”,然后将timestamp转换为第一个匹配索引。

match