【发布时间】:2018-02-28 01:21:02
【问题描述】:
我想比较日期时间列(xts 对象的索引列)中的时间。假设我有一个名为 My_Data 的数据集,如下所示:
My_Data <- structure(c(5, 2, 4, 8, 9), index = structure(c(1184599268.133,
1184602925.231, 1184604481.931, 1184685301.769, 1184685668.133), tzone = "",
tclass = c("POSIXct", "POSIXt")), class = c("xts", "zoo"),
.indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct", "POSIXt"),
.indexTZ = "", tzone = "", .Dim = c(5L, 1L), .Dimnames = list(NULL, "Price"))
注意,由于数据是xts对象,所以日期时间列在数据集的索引中,可以通过index(My_Data)函数引用
对于我的程序,我正在迭代我的数据集,我想知道数据索引中的日期何时更改(在上面的数据中,日期将从2007-07-16 变为2007-07-17 )
为此,我尝试使用以下函数来提取每个索引行的日期:
(format(index(My_Data)[1], format = "%Y-%m-%d"))
此函数将从我的数据第一行的索引中提取日期(即2007-07-16)。所以要提取任意行 i 我使用
(format( index(My_Data)[i], format = "%Y-%m-%d"))
并且,为了比较两个不同的行以找出日期是否不同,我使用:
(format( index(My_Data)[1], format = "%Y-%m-%d")) <
(format( index(My_Data)[2], format = "%Y-%m-%d"))
比较第一个索引行的日期和第二个索引行的日期。
然而,这个比较非常慢——我使用microbenchmark包检查了这个比较,它是毫秒级的!由于我有大量数据,我想知道是否有更有效的方法来检查索引中的日期何时发生变化,因为这种方法会大大降低我的代码速度。
【问题讨论】:
标签: r timestamp time-series xts