В [xts1 $ master_decision] я пытаюсь удалить строки, значения которых идентичны значению на одну ячейку выше.Я собираюсь сделать это с базой R. без привлечения каких-либо дополнительных пакетов.
Если есть способ решить эту векторизацию, пропуская цикл for, это тоже хорошо.
# --------------------------------------
# Construct xts data.
# --------------------------------------
rows_to_build <- 6
dates <- seq(
as.POSIXct("2019-01-01 09:01:00"),
length.out = rows_to_build,
by = "1 min",
tz = "CEST"
)
master_decision = c(
# - Clarification what "for-loop" should do:
3, # Keep (missing [3] in cell above)
2, # Keep (missing [2] in cell above)
2, # Delete due to [2] in cell above)
3, # Keep (missing [3] in cell above)
3, # Delete due to [3] in cell above)
2 # Keep (missing [2] in cell above)
)
data <- data.frame(master_decision)
xts1 <- xts(x = data, order.by = dates)
rm(list = ls()[! ls() %in% c("xts1")]) # Only keep [xts1].
# ------------------------------------------------------------
# For loop with purpose to remove duplicates that are grouped.
# ------------------------------------------------------------
for (i in 2:nrow(xts1)) {
if(xts1[[i]] == xts1[[i-1]]) {
xts1[-c(i)]
}
}
xts1 до запуска цикла for:
master_decision
2019-01-01 09:01:00 3
2019-01-01 09:02:00 2
2019-01-01 09:03:00 2
2019-01-01 09:04:00 3
2019-01-01 09:05:00 3
2019-01-01 09:06:00 2
Результат (строка с меткой времени [09:04:00] удалена:
master_decision
2019-01-01 09:01:00 3
2019-01-01 09:02:00 2
2019-01-01 09:03:00 2
2019-01-01 09:04:00 3
2019-01-01 09:06:00 2
Требуемый результат: (строка с отметкой времени [09:04:00] и [09:05:00] удалена
2019-01-01 09:01:00 3
2019-01-01 09:02:00 2
2019-01-01 09:04:00 3
2019-01-01 09:06:00 2