如何用从第 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),]
我想用滞后的数据集替换 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),]