# Handling missing conversion factors

## The `replace_NAs` argument

Use the `replace_NAs` argument in `convertGDP` to handle missing conversion factors.

### `replace_NAs` = NULL or NA

By default, `replace_NAs` is `NULL`, and NAs are returned along with a warning. Set `replace_NAs = NA` to explicitly return NAs without the warning.

Below, the `return_cfs` argument is set to `TRUE` to inspect the conversion factors, along side the result.

    library(GDPuc)

    # Test with Venezuela -> iso3c = VEN
    my_gdp <- tibble::tibble(
      iso3c = c("VEN"),
      year = 2010:2014,
      value = 100:104
    )

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      return_cfs = TRUE
    )
    #> Warning: NAs have been generated for countries lacking conversion factors!
    x$result
    #> # A tibble: 5 × 3
    #>   iso3c  year value
    #>   <chr> <int> <dbl>
    #> 1 VEN    2010    NA
    #> 2 VEN    2011    NA
    #> 3 VEN    2012    NA
    #> 4 VEN    2013    NA
    #> 5 VEN    2014    NA

    x$cfs
    #> # A tibble: 1 × 4
    #>   iso3c 2005 PPP conversion fact…¹ 2019 value of base 2…² 2019 PPP conversion …³
    #>   <chr>                      <dbl>                  <dbl>                  <dbl>
    #> 1 VEN                        0.842                     NA                     NA
    #> # ℹ abbreviated names:
    #> #   ¹​`2005 PPP conversion factor in (LCU per international $)`,
    #> #   ²​`2019 value of base 2005 GDP deflator in (constant 2019 LCU per constant 2005 LCU)`,
    #> #   ³​`2019 PPP conversion factor in (LCU per international $)`

To eliminate the warning:

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      replace_NAs = NA
    )

You can also use the `GDPuc.warn` option to suppress warnings from `convertGDP` in general (see “Silence warnings”).

### `replace_NAs` = 0

If set to 0, resulting NAs are set to 0.

    my_gdp <- tibble::tibble(
      iso3c = "VEN",
      year = 2010:2014,
      value = 100:104
    )

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      replace_NAs = 0,
      return_cfs = TRUE
    )
    x$result
    #> # A tibble: 5 × 3
    #>   iso3c  year value
    #>   <chr> <int> <dbl>
    #> 1 VEN    2010     0
    #> 2 VEN    2011     0
    #> 3 VEN    2012     0
    #> 4 VEN    2013     0
    #> 5 VEN    2014     0

    x$cfs
    #> # A tibble: 1 × 4
    #>   iso3c 2005 PPP conversion fact…¹ 2019 value of base 2…² 2019 PPP conversion …³
    #>   <chr>                      <dbl>                  <dbl>                  <dbl>
    #> 1 VEN                        0.842                     NA                     NA
    #> # ℹ abbreviated names:
    #> #   ¹​`2005 PPP conversion factor in (LCU per international $)`,
    #> #   ²​`2019 value of base 2005 GDP deflator in (constant 2019 LCU per constant 2005 LCU)`,
    #> #   ³​`2019 PPP conversion factor in (LCU per international $)`

### `replace_NAs` = “no_conversion”

If set to “no_conversion”, NAs are replaced with the values in the gdp argument.

    my_gdp <- tibble::tibble(
      iso3c = "VEN",
      year = 2010:2014,
      value = 100:104
    )

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      replace_NAs = "no_conversion",
      return_cfs = TRUE
    )
    x$result
    #> # A tibble: 5 × 3
    #>   iso3c  year value
    #>   <chr> <int> <dbl>
    #> 1 VEN    2010   100
    #> 2 VEN    2011   101
    #> 3 VEN    2012   102
    #> 4 VEN    2013   103
    #> 5 VEN    2014   104

    x$cfs
    #> # A tibble: 1 × 4
    #>   iso3c 2005 PPP conversion fact…¹ 2019 value of base 2…² 2019 PPP conversion …³
    #>   <chr>                      <dbl>                  <dbl>                  <dbl>
    #> 1 VEN                        0.842                     NA                     NA
    #> # ℹ abbreviated names:
    #> #   ¹​`2005 PPP conversion factor in (LCU per international $)`,
    #> #   ²​`2019 value of base 2005 GDP deflator in (constant 2019 LCU per constant 2005 LCU)`,
    #> #   ³​`2019 PPP conversion factor in (LCU per international $)`

### `replace_NAs` = “linear”

If set to “linear”, missing conversion factors are inter- and extrapolated linearly. For the extrapolation, the closest 5 data points are used.

    my_gdp <- tibble::tibble(
      iso3c = "VEN",
      year = 2010:2014,
      value = 100:104
    )

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      replace_NAs = "linear",
      return_cfs = TRUE
    )
    x$result
    #> # A tibble: 5 × 3
    #>   iso3c  year value
    #>   <chr> <int> <dbl>
    #> 1 VEN    2010  203.
    #> 2 VEN    2011  205.
    #> 3 VEN    2012  208.
    #> 4 VEN    2013  210.
    #> 5 VEN    2014  212.

    x$cfs
    #> # A tibble: 1 × 4
    #>   iso3c 2005 PPP conversion fact…¹ 2019 value of base 2…² 2019 PPP conversion …³
    #>   <chr>                      <dbl>                  <dbl>                  <dbl>
    #> 1 VEN                        0.842                   14.4                   5.97
    #> # ℹ abbreviated names:
    #> #   ¹​`2005 PPP conversion factor in (LCU per international $)`,
    #> #   ²​`2019 value of base 2005 GDP deflator in (constant 2019 LCU per constant 2005 LCU)`,
    #> #   ³​`2019 PPP conversion factor in (LCU per international $)`

### `replace_NAs` = “regional_average”

If set to “regional_average”, the regional GDP-weighted averages will be used. Requires a region-mapping, and a column in the source object with GDP data at PPP, to be used as weight. May lead to misleading results, use with care!

    my_gdp <- tibble::tibble(
      iso3c = "VEN",
      year = 2010:2014,
      value = 100:104
    )

    my_mapping_data_frame <- tibble::tibble(
      iso3c = c("VEN", "BRA", "ARG", "COL"),
      region = "LAM"
    )

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      replace_NAs = "regional_average",
      with_regions = my_mapping_data_frame,
      return_cfs = TRUE
    )
    x$result
    #> # A tibble: 5 × 3
    #>   iso3c  year value
    #>   <chr> <int> <dbl>
    #> 1 VEN    2010 0.485
    #> 2 VEN    2011 0.489
    #> 3 VEN    2012 0.494
    #> 4 VEN    2013 0.499
    #> 5 VEN    2014 0.504

    x$cfs
    #> # A tibble: 1 × 3
    #>   iso3c 2019 value of base 2005 GDP deflator in (consta…¹ 2019 PPP conversion …²
    #>   <chr>                                             <dbl>                  <dbl>
    #> 1 VEN                                                1.18                   205.
    #> # ℹ abbreviated names:
    #> #   ¹​`2019 value of base 2005 GDP deflator in (constant 2019 LCU per constant 2005 LCU)`,
    #> #   ²​`2019 PPP conversion factor in (LCU per international $)`

    # Compare the 2019 PPP with the 2005 PPP. They are not in the same order of magnitude.
    # Obviously, being a part of the same region, does not mean the currencies are of the same strength.

### `replace_NAs` = c(“linear”, “…”)

If a vector is passed, with “linear” as first element, then the operations are done in sequence. For example for c(“linear”, 0), missing conversion factors are first inter- and extrapolated linearly but if any missing conversion factors still lead to NAs, these are replaced with 0.

    # Create an imaginary country XXX, and add it to the Latin America region
    my_gdp <- tibble::tibble(
      iso3c = c("VEN", "XXX"),
      year = 2010,
      value = 100
    )

    my_mapping_data_frame <- tibble::tibble(
      iso3c = c("VEN", "BRA", "ARG", "COL", "XXX"),
      region = "LAM"
    )

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      replace_NAs = c("linear", 0),
      with_regions = my_mapping_data_frame,
      return_cfs = TRUE
    )
    x$result
    #> # A tibble: 2 × 3
    #>   iso3c  year value
    #>   <chr> <dbl> <dbl>
    #> 1 VEN    2010  203.
    #> 2 XXX    2010    0

    x$cfs
    #> # A tibble: 2 × 3
    #>   iso3c 2019 value of base 2005 GDP deflators in (const…¹ 2019 PPP conversion …²
    #>   <chr>                                             <dbl>                  <dbl>
    #> 1 VEN                                                14.4                   5.97
    #> 2 XXX                                                NA                    NA
    #> # ℹ abbreviated names:
    #> #   ¹​`2019 value of base 2005 GDP deflators in (constant 2019 LCU per constant 2005 LCU)`,
    #> #   ²​`2019 PPP conversion factors in (LCU per international $)`

### `replace_NAs` = “with_USA”

If set to “with_USA”, missing conversion factors are extended using the growth rates of the USA. If that is not possible (for instance if there is no data for any years at all) the data for these countries is converted using the conversion factors of the USA.

    # Venezuela is only missing conversion factors in 2019, AIA has no conversion factors at all.
    my_gdp <- tibble::tibble(
      iso3c = c("VEN", "AIA", "USA"),
      value = 100
    )

    x <- convertGDP(
      gdp = my_gdp,
      unit_in = "constant 2005 Int$PPP",
      unit_out = "constant 2019 Int$PPP",
      replace_NAs = "with_USA",
      return_cfs = TRUE
    )
    x$result
    #> # A tibble: 3 × 2
    #>   iso3c value
    #>   <chr> <dbl>
    #> 1 VEN    264.
    #> 2 AIA    128.
    #> 3 USA    128.

    x$cfs
    #> # A tibble: 3 × 4
    #>   iso3c 2005 PPP conversion fact…¹ 2019 value of base 2…² 2019 PPP conversion …³
    #>   <chr>                      <dbl>                  <dbl>                  <dbl>
    #> 1 USA                        1                       1.28                   1
    #> 2 VEN                        0.842                   8.40                   2.68
    #> 3 AIA                        1                       1.28                   1
    #> # ℹ abbreviated names:
    #> #   ¹​`2005 PPP conversion factors in (LCU per international $)`,
    #> #   ²​`2019 value of base 2005 GDP deflators in (constant 2019 LCU per constant 2005 LCU)`,
    #> #   ³​`2019 PPP conversion factors in (LCU per international $)`