У меня есть следующие данные: мне нужно вменять пропущенные значения (NA) со следующим немедленным наблюдением, если разница в отметке времени превышает 1 секунду
Также для пропущенных значений, которые появляются для разницы во времени1 секунду, я должен вменять их с линейной интерполяцией.Пожалуйста, помогите
Timestamp Value
2018-04-03 05:18:08 16.0
2018-04-03 05:18:09 23.0
2018-04-03 05:18:10 28.0
2018-04-03 05:18:23 NA
2018-04-03 05:18:24 42.0
2018-04-03 05:18:25 NA
2018-04-03 05:18:26 53.0
2018-04-03 05:18:31 NA
2018-04-03 05:18:32 16.0
Expected Output:
Timestamp Value
2018-04-03 05:18:08 16.0
2018-04-03 05:18:09 23.0
2018-04-03 05:18:10 28.0
2018-04-03 05:18:23 42.0
2018-04-03 05:18:24 42.0
2018-04-03 05:18:25 47.5
2018-04-03 05:18:26 53.0
2018-04-03 05:18:31 16.0
2018-04-03 05:18:32 16.0
Код, который я пробовал двумя способами (конечно, он не дал правильных результатов)
data%>%mutate(Value = ifelse(is.na(Value), na.locf(Value, option = "nocb", na.remaining = "rev"), Value))
my.na.approx <- function(x) {
if (sum(is.finite(x)) == 0L) return(x)
if (sum(is.finite(x)) == 1L) return(na.approx(x, rule=2, method="constant"))
na.approx(x, rule=2)
}
my.na.approx(data$Value)