2015-08-17 3 views
0
Raw Data na.approx desired result 
1    1    1 
NA    3    4 
5    5    5 
6    6    6 
7    7    7 
NA    8    4 
NA    9    7 
10    10   10 
13    11   13 
14    12   14 

По умолчанию, я считаю, na.approx в R будет интерполировать NA между двумя известными значениями; один до и после после NA (результат будет рассматриваться как столбец «na.approx» выше). Есть ли способ изменить эту функцию для интерполяции на основе следующих двух известных значений? например, первый N A для интерполирования с использованием 5 и 6 .... но не 1 и 5.R Помощь - na.approx похожа на Supertrend в Excel

+0

Почему желательно, чтобы первый 'NA' был' 4', если он должен быть между '5' и' 6'? –

+0

То, что я пытаюсь достичь здесь, похоже на функцию TREND/SuperTREND в excel. он снизился на -1 (от 6 до 5), поэтому я хочу применить ту же логику для NA (от 5 до 4 путем вычитания 1) – JJJ

ответ

0

Я не уверен, есть ли точный эквивалент тому, что вы хотите сделать, но вы можете добиться аналогичных результатов следующим образом:

> data <- c(1, NA, 5,6,7,NA,NA,10,13,14) 
> ind <- which(is.na(data)) 
> sapply(rev(ind), function(i) data[i] <<- data[i + 1] - 1) 
> data 
[1] 1 4 5 6 7 8 9 10 13 14