R:如何将xts列延迟一天

R:如何将xts列延迟一天,r,xts,R,Xts,想象一组日内数据,例如每小时一次。多亏了Google和Joshua对其他人的宝贵回答,我在xts对象中创建了新的列,其中包含每日打开/高/低/关闭值。这些是应用于日内间隔的每日值,因此同一天的所有行在特定列中具有相同的值。由于HLC值是前瞻性的,所以我想将它们移到第二天。让我们只关注一个名为Prev.Day.Close的专栏 实际情况: My Prev.Day.Close column caries当前的正确值。所有“2010-01-01:?”行的值相同-2010-01-01交易日收盘。因此,现

想象一组日内数据,例如每小时一次。多亏了Google和Joshua对其他人的宝贵回答,我在xts对象中创建了新的列,其中包含每日打开/高/低/关闭值。这些是应用于日内间隔的每日值,因此同一天的所有行在特定列中具有相同的值。由于HLC值是前瞻性的,所以我想将它们移到第二天。让我们只关注一个名为Prev.Day.Close的专栏

实际情况: My Prev.Day.Close column caries当前的正确值。所有“2010-01-01:?”行的值相同-2010-01-01交易日收盘。因此,现在不是前一天,专栏名称是这样说的

我需要的是:

将Prev.Day.Close列延迟到集合的第二天

我不能使用lag()延迟它,因为它是按行(而不是按天)工作的。它不能是固定的日历日,如:

C <- ave(x$Close, .indexday(x), FUN = last)
index(C) <- index(C) + 86400
x$Prev.Day.Close <- C

C如果我理解正确,这里有一种方法:

require(xts)
# sample data
dt <- .POSIXct(seq(1, 86400*4, 3600), tz="UTC")-1
x <- xts(seq_along(dt), dt)
# get the last value for each calendar day
daily.last <- apply.daily(x, last)
# merge the last value of the day with the origianl data set
y <- merge(x, daily.last)
# now lag the last value of the day and carry the NA forward
# y$daily.last <- na.locf(lag(y$daily.last))
y$daily.last <- lag(y$daily.last)
y$daily.last <- na.locf(y$daily.last)
require(xts)
#样本数据

这正是我想做的。你的例子清晰易懂。我设法在代码中实现了您的解决方案。非常感谢你,约书亚。不幸的是,我不能投票,直到一些声誉水平。