Это работает для того, что вы ищете?
gdp_df$AnnualGrowth <- (c(gdp_df$quarters.value[-c(1:4)], rep(0, 4)) / gdp_df$quarters.value ) - 1
Ваш -4
в индексе просто удаляет четвертое значение и возвращает вектор, который вы хотитечтобы удалить первые четыре, именно поэтому я использовал -c(1:4)
выше.
dplyr
также является жизнеспособным решением:
library(dplyr)
gdp_df <- gdp_df %>% mutate(AnnualGrowth = (quarters.value / lag(quarters.value, 4)) - 1)