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

How to replace every six row in a data set with its lag starting from 7th row

我想用滞后的数据集替换 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

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

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