Следуя тенденции заполнить недостающие значения в R - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть эталонный набор данных:

lookup = structure(list(v = c(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26), TI = c(0.913066666666667, 
0.70784, 0.584704, 0.502613333333333, 0.443977142857143, 0.4, 
0.365795555555556, 0.338432, 0.316043636363636, 0.297386666666667, 
0.2816, 0.268068571428571, 0.256341333333333, 0.24608, 0.237025882352941, 
0.228977777777778, 0.221776842105263, 0.215296, 0.209432380952381, 
0.204101818181818, 0.199234782608696, 0.194773333333333, 0.1906688, 
0.18688)), class = "data.frame", row.names = c(NA, -24L))

Разделив каждый элемент столбца TI на предыдущий, я получу:

library(dplyr)
trend = lookup$TI/lag(lookup$TI)

с этим трендом в качестве ссылкиЯ хотел бы заполнить значения NA в моем тестовом файле:

test = structure(list(events = c(5, 179, 256, 192, 117, 35, 35, 11, 
15, 3, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0), v = c(3, 4, 
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
22, 23, 24, 25, 26), TI = c(NA, 0.0795651909763371, 0.0587914615737312, 
0.0640542134644949, 0.0621684208232864, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, 
-24L), class = "data.frame")

В тестовом файле я хотел бы заменить test$TI = NA с учетом тренда.это означает:

test$TI[6] = test$TI[5]*trend[6]
test$TI[7] = test$TI[6]*trend[7]
...

для test$TI[1] Я должен создать функцию trend следующим образом:

library(dplyr)
    trend = lag(lookup$TI)/lookup$TI

затем:

test$TI[1] = test$TI[2]*trend[2]

Мой вопрос: какМогу ли я сделать это автоматически?Так как у меня есть много тех test файлов, позиции которых NA не всегда совпадают.

...