Я надеялся, что кто-нибудь сможет мне помочь с этой проблемой. Я работаю с данными временных рядов, записи которых публикуются каждые пять лет. Кадр данных df
является примером с шагом по времени в df$Time
и значениями записи в df$A
.
df
Time A
5 4.8
10 19.6
15 27.5
20 39.7
Мне нужно преобразовать df
в годовой временной ряд и заполнить все новые записи новыми значениями на основе расчета. Я успешно преобразовал df
в годовые данные df2
, используя следующее:
df2 <- data.frame("Time" = c(5:20), "A" = c(5:20))
df2$A[] <- sapply(df2$A, function(x) df$A[match(x, df$Time)])
df2[is.na(df2)] <- 0
df2
Time A
5 4.8
6 0
7 0
8 0
9 0
10 19.6
11 0
12 0
13 0
14 0
15 27.5
16 0
17 0
18 0
19 0
20 39.7
Что я не могу понять, так это как рассчитать новые значения для df2$A
. Расчет зависит от относительного положения других значений строки / записи - например, для df2$A[2]
вычисление будет df2$A[2] <- df2$A[1] + (df2$A[6] - df2$A[1])/5
. Он также изменяется во всем фрейме данных, например df2$A[7] <- df2$A[6] + (df2$A[11] – df2$A[6]) / 5
.
for
Циклы приводят только к разочарованию, и я пытаюсь сделать это, не выполняя ни одной строки кода для каждой новой записи (реальные данные содержат сотни записей). Я пытаюсь добраться до df3
эффективным способом - спасибо!
df3
Time A
5 4.8
6 7.76
7 10.72
8 13.68
9 16.64
10 19.6
11 21.18
12 22.76
13 24.34
14 25.92
15 27.5
16 29.94
17 32.38
18 34.82
19 37.26
20 39.7