В настоящее время я пытаюсь вменять значения в вектор в R. Условия вменения:
- Найти все значения NA
- Затем проверьте, есть ли у них существующее значение до и после них
- Также проверьте, больше ли значение, следующее за NA, чем значение до NA
- Если условия соблюдены, рассчитайте среднее значение, принимая значения до и после.
- Заменить значение NA на вмененное значение
# example one
input_one = c(1,NA,3,4,NA,6,NA,NA)
# example two
input_two = c(NA,NA,3,4,5,6,NA,NA)
# example three
input_three = c(NA,NA,3,4,NA,6,NA,NA)
Я начал писать код для определения значений, которые можно вменять. Но я застрял со следующим.
# incomplete function to detect the values
sapply(split(!is.na(input[c(rbind(which(is.na(c(input)))-1, which(is.na(c(input)))+1))]),
rep(1:(length(!is.na(input[c(which(is.na(c(input)))-1, which(is.na(c(input)))+1)]))/2), each = 2)), all)
Это, однако, обнаруживает только NA, которые могут быть вменяемыми, и работает только с примером один. Он неполный и, к сожалению, очень трудный для чтения и понимания.
Любая помощь с этим будет высоко оценена.