silent_hunter
silent_hunter

Reputation: 2508

Forecasting one step ahead

I have one data.frame with three columns Year, Nominal_Revenue and COEFFICIENT. So I want to forecast with this data like example below

        library(dplyr)
    TEST<-data.frame(
      Year= c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021),
      Nominal_Revenue=c(8634,5798,6011,6002,6166,6478,6731,7114,6956,6968,7098,7610,7642,8203,9856,10328,11364,12211,13150,NA,NA,NA),
      COEFFICIENT=c(NA,1.016,1.026,1.042,1.049,1.106,1.092,1.123,1.121,0.999,1.059,1.066,1.006,1.081,1.055,1.063,1.071,1.04,1.072,1.062,1.07,   1.075))

SIMULATION<-mutate(TEST,
                        FORECAST=lag(Nominal_Revenue)*COEFFICIENT
                        )

And results from this code is like picture below, or in other words this code calculate forecasting only for one year or more precisely 2019. enter image description here

So my intention is get results only for NA in column Nominal_Revenue,like picture below. enter image description here

So can anybody help me how to fix this code ?

Upvotes: 1

Views: 164

Answers (1)

boski
boski

Reputation: 2467

Because each time you need the previously computed value, we can loop for the number of NAs in your variable and apply a dplyr

for (i in 1:length(which(is.na(TEST$Nominal_Revenue)))){
TEST=TEST%>%mutate(Nominal_Revenue=if_else(is.na(Nominal_Revenue),COEFFICIENT*lag(Nominal_Revenue),Nominal_Revenue))
}

> TEST
   Year Nominal_Revenue COEFFICIENT
1  2000         8634.00          NA
2  2001         5798.00       1.016
3  2002         6011.00       1.026
4  2003         6002.00       1.042
5  2004         6166.00       1.049
6  2005         6478.00       1.106
7  2006         6731.00       1.092
8  2007         7114.00       1.123
9  2008         6956.00       1.121
10 2009         6968.00       0.999
11 2010         7098.00       1.059
12 2011         7610.00       1.066
13 2012         7642.00       1.006
14 2013         8203.00       1.081
15 2014         9856.00       1.055
16 2015        10328.00       1.063
17 2016        11364.00       1.071
18 2017        12211.00       1.040
19 2018        13150.00       1.072
20 2019        13965.30       1.062
21 2020        14942.87       1.070
22 2021        16063.59       1.075

Upvotes: 3

Related Questions