Hello I tried to calculate a 5 Year Moving Average of Exchange Rate in R but I can’t get the code to work properly. I wanted to calculate a Moving Average similar to Atlas Conversion Factor used by World Bank for GNI estimates with some minor modifications.
Thanks,
Anon9001.
# Installing and loading required packages.
install.packages( “WDI”)
library(WDI)
# Getting GDP Deflator “NY.GDP.DEFL.ZS” and Exchange Rates “PA.NUS.ATLS”.
WDI <- WDI(indicator=c("NY.GDP.DEFL.ZS","PA.NUS.ATLS"))
# Showing part of the Dataframe.
WDI |>
tibble()
country iso2c iso3c year NY.GDP.DEFL.ZS PA.NUS.ATLS
1 Afghanistan AF AFG 1960 NA 45.00000
2 Afghanistan AF AFG 1961 NA 45.00000
3 Afghanistan AF AFG 1962 NA 45.00000
4 Afghanistan AF AFG 1963 NA 45.00000
5 Afghanistan AF AFG 1964 NA 45.00000
6 Afghanistan AF AFG 1965 NA 45.00000
7 Afghanistan AF AFG 1966 NA 45.00000
8 Afghanistan AF AFG 1967 NA 45.00000
9 Afghanistan AF AFG 1968 NA 45.00000
10 Afghanistan AF AFG 1969 NA 45.00000
11 Afghanistan AF AFG 1970 NA 45.00000
12 Afghanistan AF AFG 1971 NA 45.00000
13 Afghanistan AF AFG 1972 NA 45.00000
14 Afghanistan AF AFG 1973 NA 45.00000
15 Afghanistan AF AFG 1974 NA 45.00000
WDI |>
mutate (Atlas= median(PA.NUS.ATLS*(NY.GDP.DEFL.ZS/NY.GDP.DEFL.ZS/NY.GDP.DEFL.ZS[iso3c=="USA"]/NY.GDP.DEFL.ZS[iso3c=="USA"]),
lag(PA.NUS.ATLS,n=1)*(NY.GDP.DEFL.ZS/lag(NY.GDP.DEFL.ZS,n=1)/NY.GDP.DEFL.ZS[iso3c=="USA"]/lag(NY.GDP.DEFL.ZS[iso3c=="USA"],n=1)),
lag(PA.NUS.ATLS,n=2)*(NY.GDP.DEFL.ZS/lag(NY.GDP.DEFL.ZS,n=2)/NY.GDP.DEFL.ZS[iso3c=="USA"]/lag(NY.GDP.DEFL.ZS[iso3c=="USA"],n=2)),
lag(PA.NUS.ATLS,n=3)*(NY.GDP.DEFL.ZS/lag(NY.GDP.DEFL.ZS,n=3)/NY.GDP.DEFL.ZS[iso3c=="USA"]/lag(NY.GDP.DEFL.ZS[iso3c=="USA"],n=3)),
lag(PA.NUS.ATLS,n=4)*(NY.GDP.DEFL.ZS/lag(NY.GDP.DEFL.ZS,n=4)/NY.GDP.DEFL.ZS[iso3c=="USA"]/lag(NY.GDP.DEFL.ZS[iso3c=="USA"],n=4)) ,
lag(PA.NUS.ATLS,n=5)*(NY.GDP.DEFL.ZS/lag(NY.GDP.DEFL.ZS,n=5)/NY.GDP.DEFL.ZS[iso3c=="USA"]/lag(NY.GDP.DEFL.ZS[iso3c=="USA"],n=5)),na.rm=TRUE), by= c("country","year"))
The code above results in this error:
Error in `mutate()`:
ℹ In argument: `by = c("country", "year")`.
Caused by error:
! `by` must be size 17024 or 1, not 2.
Run `rlang::last_trace()` to see where the error occurred.