Как заменить каждые шесть строк в наборе данных с лагом, начиная с 7-й строки - PullRequest
0 голосов
/ 17 октября 2019

Я хочу заменить каждую шестую строку в xts из набора данных с его задержкой. Этот процесс должен начинаться с 7-го ряда, что означает, что 7-й ряд будет заменен на 6-й ряд, 13-й ряд будет заменен на 12-й ряд и т. Д.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Приведенный ниже код вычтет 1 из индекса, если индекс равен 1 после кратного 6. Таким образом, 7 станет индексом 6, 13 станет 12 и т. Д. Подстановка объекта xts с этим новым индексом даст результат, который выопишите

i <- seq(nrow(myxts))
myxts[i - (i %% 6L == 1L),]
1 голос
/ 17 октября 2019

Вот простой способ использования поднабора:

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
...