如果仅提供国家代码,我如何将一种货币转换为另一种货币?
How do I convert from one currency to another if only the country code is given?
我有一个这样的数据集:
value <- data.frame(Country = c('AUS', 'AUT', 'GBR'), amount = c(200, 150, 300))
每个金额都以各自国家/地区的货币给出。所以200在澳大利亚。美元,欧元 150,英镑 300。
最后我想要的是将每个数字转换为相同的货币,比方说欧元。
我已经找到类似 library(quantmod)
的内容,但这只会帮助转换。所以我需要先从国家代码中获取货币。
有什么想法吗?
我们可以使用 countrycode
包将 ISO3 国家代码转换为相关的 ISO4217 货币代码,然后使用 priceR
将每种货币转换为单一货币,在本例中为欧元.
我们先获取货币代码。
library(countrycode)
library(priceR)
value$currency_code <- countrycode(value$Country, "iso3c", "iso4217c")
value
#> Country amount currency_code
#> 1 AUS 200 AUD
#> 2 AUT 150 EUR
#> 3 GBR 300 GBP
然后我们可以获得所有最新的欧元汇率。
e_df <- exchange_rate_latest("EUR")
#> Daily EUR exchange rate as at end of day 2022-01-18 GMT
head(e_df)
#> currency one_eur_is_equivalent_to
#> 1 AED 4.184241
#> 2 AFN 119.337926
#> 3 ALL 122.074346
#> 4 AMD 547.591037
#> 5 ANG 2.052008
#> 6 AOA 611.091441
最后,让我们将交易所带入我们的数据框并计算以欧元为单位的金额。
value$exchange_euro <- e_df$one_eur_is_equivalent_to[match(value$currency_code, e_df$currency)]
value$amount_euro <- value$amount / value$exchange_euro
value
#> Country amount currency_code exchange_euro amount_euro
#> 1 AUS 200 AUD 1.584396 126.2311
#> 2 AUT 150 EUR 1.000000 150.0000
#> 3 GBR 300 GBP 0.836131 358.7955
我有一个这样的数据集:
value <- data.frame(Country = c('AUS', 'AUT', 'GBR'), amount = c(200, 150, 300))
每个金额都以各自国家/地区的货币给出。所以200在澳大利亚。美元,欧元 150,英镑 300。 最后我想要的是将每个数字转换为相同的货币,比方说欧元。
我已经找到类似 library(quantmod)
的内容,但这只会帮助转换。所以我需要先从国家代码中获取货币。
有什么想法吗?
我们可以使用 countrycode
包将 ISO3 国家代码转换为相关的 ISO4217 货币代码,然后使用 priceR
将每种货币转换为单一货币,在本例中为欧元.
我们先获取货币代码。
library(countrycode)
library(priceR)
value$currency_code <- countrycode(value$Country, "iso3c", "iso4217c")
value
#> Country amount currency_code
#> 1 AUS 200 AUD
#> 2 AUT 150 EUR
#> 3 GBR 300 GBP
然后我们可以获得所有最新的欧元汇率。
e_df <- exchange_rate_latest("EUR")
#> Daily EUR exchange rate as at end of day 2022-01-18 GMT
head(e_df)
#> currency one_eur_is_equivalent_to
#> 1 AED 4.184241
#> 2 AFN 119.337926
#> 3 ALL 122.074346
#> 4 AMD 547.591037
#> 5 ANG 2.052008
#> 6 AOA 611.091441
最后,让我们将交易所带入我们的数据框并计算以欧元为单位的金额。
value$exchange_euro <- e_df$one_eur_is_equivalent_to[match(value$currency_code, e_df$currency)]
value$amount_euro <- value$amount / value$exchange_euro
value
#> Country amount currency_code exchange_euro amount_euro
#> 1 AUS 200 AUD 1.584396 126.2311
#> 2 AUT 150 EUR 1.000000 150.0000
#> 3 GBR 300 GBP 0.836131 358.7955