R 如何用从第7行开始的滞后替换数据集中的每六行

R 如何用从第7行开始的滞后替换数据集中的每六行,r,dataframe,time-series,xts,R,Dataframe,Time Series,Xts,我想用滞后替换数据集中xts中的每六行。这个过程应该从第7行开始,这意味着第7行将被第6行取代,第13行将被第12行取代,依此类推。下面是一个使用子集的简单方法: myxts <- xts::xts(x = 1:100, order.by = seq.Date(from = as.Date("2019-10-17"), by = "d", length.out = 100)) myxts[1:floor(nrow(myxts) / 6) * 6 + 1, ] <- myxts[1:

我想用滞后替换数据集中
xts
中的每六行。这个过程应该从第7行开始,这意味着第7行将被第6行取代,第13行将被第12行取代,依此类推。

下面是一个使用子集的简单方法:

myxts <- xts::xts(x = 1:100, order.by = seq.Date(from = as.Date("2019-10-17"), by = "d", length.out = 100))

myxts[1:floor(nrow(myxts) / 6) * 6 + 1, ] <- myxts[1:floor(nrow(myxts) / 6) * 6, ] 

2019-10-17    1
2019-10-18    2
2019-10-19    3
2019-10-20    4
2019-10-21    5
2019-10-22    6
2019-10-23    6
2019-10-24    8
2019-10-25    9
2019-10-26   10
2019-10-27   11
2019-10-28   12
2019-10-29   12
2019-10-30   14
2019-10-31   15

myxts下面是一种使用子集的简单方法:

myxts <- xts::xts(x = 1:100, order.by = seq.Date(from = as.Date("2019-10-17"), by = "d", length.out = 100))

myxts[1:floor(nrow(myxts) / 6) * 6 + 1, ] <- myxts[1:floor(nrow(myxts) / 6) * 6, ] 

2019-10-17    1
2019-10-18    2
2019-10-19    3
2019-10-20    4
2019-10-21    5
2019-10-22    6
2019-10-23    6
2019-10-24    8
2019-10-25    9
2019-10-26   10
2019-10-27   11
2019-10-28   12
2019-10-29   12
2019-10-30   14
2019-10-31   15

myxts如果索引是6的倍数后的1,则下面的代码将从索引中减去1。因此,7将成为索引6,13将成为12,等等。用这个新索引子集您的xts对象将给出您描述的结果

i <- seq(nrow(myxts))
myxts[i - (i %% 6L == 1L),]

i如果索引是6的倍数后的1,则下面的代码将从索引中减去1。因此,7将成为索引6,13将成为12,等等。用这个新索引子集您的xts对象将给出您描述的结果

i <- seq(nrow(myxts))
myxts[i - (i %% 6L == 1L),]

运行此代码的
i在
[.xts
中给出此错误(x,i,其中.i=TRUE):subscript out boundscan您可以用192列事务复制此示例。我刚刚尝试了一个新的R会话,它工作得很好。您可以重新启动R并重试吗?如果它不工作:您使用的是哪个R版本?您可以发布
sessionInfo()的输出吗
?这也适用于多列,其工作方式与适用于一列的方式相同。ok R版本3.6.0(2019-04-26)平台:x86_64-w64-mingw32/x64(64位),运行此代码的Windows 10 x64(build 17134)在
[.xts
中给出此错误(x,i,which.i=TRUE):subscript out boundscan您可以用192列事务复制此示例。我刚刚尝试了一个新的R会话,它工作得很好。您可以重新启动R并重试吗?如果它不工作:您使用的是哪个R版本?您可以发布
sessionInfo()的输出吗
?这同样适用于多列。ok R版本3.6.0(2019-04-26)平台:x86_64-w64-mingw32/x64(64位)运行于:Windows 10 x64(build 17134)谢谢先生您拯救了我的一天谢谢先生您拯救了我的一天