r - 如果仅给出国家/地区代码,如何从一种货币转换为另一种货币?

标签 r quantmod

我有一个类似这样的数据集:

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

关于r - 如果仅给出国家/地区代码,如何从一种货币转换为另一种货币?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70758680/

相关文章:

r - 从 R 中的雅虎财经中提取历史分析师意见

r - quantmod::chart_Series 和 mapply 给出图表参数错误

r - merge.xts 在合并每周系列时产生错误结果

r - 替代 Quantmod ZigZag 叠加

r - Group_by/summarize 通过函数内的两个变量

r - 将变量或表达式传递给 `aes`

c++ - Rcpp 参数范围向上传播?

html - R 解析网页中的不完整文本(HTML)

R - 嵌套列表到 tibble

R/quantmod : multiple charts all using the same y-axis