Мне нужно удалить строки xts на основе определенных критериев в столбце [code].Хорошо, что при удалении будут временные промежутки во временном ряду xts.
Вопрос: Как мне решить step1 / step3 / step4.
Критерии следующие:
Шаг 1: Значение [3] в [code]: Если xts начинается с [code] [3], удалите эту строку.
Шаг 2: значение [0] в [код]: Удалить всю строку.
Шаг 3: значение [2] в [код]: a) Оставьте только [2], который запускает xts, все строки над первым [2] должны быть удалены.б) Держите [2], который имеет [3] над собой.
Шаг 4: значение [3] в [code]: Оставьте только [3], над которым [2].
Мое решение для шага 2:
Находит и сохраняет все [2] и [3], таким образом удаляя все [0]:
xts3 <- xts3[grep("[2]|[3]", xts3$code), ]
My R-file:
dates <- as.POSIXct( # Construct the dates to be used.
c(
"2013-07-24 09:01:00",
"2013-07-24 09:02:00",
"2013-07-24 09:03:00",
"2013-07-24 09:04:00",
"2013-07-24 09:05:00",
"2013-07-24 09:06:00",
"2013-07-24 09:07:00",
"2013-07-24 09:08:00",
"2013-07-24 09:09:00"
)
)
code <- c(3, 2, 0, 2, 2, 2, 3, 3, 3) # Criterias for delete/keep rows.
data <- data.frame(code) # Create a dataframe.
xts3 <- xts(x=data, order.by=dates) # Create xts based on dataframe.
Результат R-файла (до удаления строк на основе критериев):
code
2013-07-24 09:01:00 3
2013-07-24 09:02:00 2
2013-07-24 09:03:00 0
2013-07-24 09:04:00 2
2013-07-24 09:05:00 2
2013-07-24 09:06:00 2
2013-07-24 09:07:00 3
2013-07-24 09:08:00 3
2013-07-24 09:09:00 3
Объяснение: Что должно вызывать удаление строк (на основе критериев):
code
2013-07-24 09:01:00 3 # To be removed due to step-1.
2013-07-24 09:02:00 2 # To be kept due to step-3a.
2013-07-24 09:03:00 0 # To be removed due to step-2
2013-07-24 09:04:00 2 # To be removed due to not fulfilling step-3b
2013-07-24 09:05:00 2 # To be removed due to not fulfilling step-3b
2013-07-24 09:06:00 2 # To be removed due to not fulfilling step-3b
2013-07-24 09:07:00 3 # The kept due to step-4
2013-07-24 09:08:00 3 # To be removed due to not fulfilling step4.
2013-07-24 09:09:00 3 # To be removed due to not fulfilling step4.
Ожидаемый результат после удаления строк:
code
2013-07-24 09:02:00 2
2013-07-24 09:07:00 3