У меня есть эталонный набор данных:
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
не всегда совпадают.