簡體   English   中英

如何將數據集中的每六行替換為從第 7 行開始的滯后

[英]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 object 進行子集將給出您描述的結果

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM