我必须在R中用不同货币的货币值进行一些计算(例如10.02 DOL,00.12 CAD,123.32 EUR,......)。您在R中存储价值和相应货币的最佳方式是什么?
目前我的数据框中包含两列“Value”和“ReferenceCurrency”等。是否有合理的方法将两列存储在一起?
我不是想要一种方法将其格式化为输出,而是以一种我可以进行货币转换和其他操作的方式存储它,其值取决于它所在的货币。
答案 0 :(得分:1)
match
- 函数提供了一个数字索引,可用于从向量中提取值:
> convert <- data.frame( country = c("USD", "euro", "HKD"), fact= c( 1.4, 1, 8) )
> convert
country fact
1 USD 1.4
2 euro 1.0
3 HKD 8.0
> dat <- data.frame( transact = LETTERS[1:10], curr = sample(1:10, 10) , country=sample( c("USD", "euro", "HKD"), 10 , rep=TRUE) )
> dat
transact curr country
1 A 4 USD
2 B 1 euro
3 C 3 USD
4 D 6 euro
5 E 2 USD
6 F 9 euro
7 G 5 USD
8 H 8 euro
9 I 10 USD
10 J 7 HKD
> dat$EUequiv <- dat$curr/convert$fact[ match(dat$country, convert$country)]
> dat
transact curr country EUequiv
1 A 4 USD 2.857143
2 B 1 euro 1.000000
3 C 3 USD 2.142857
4 D 6 euro 6.000000
5 E 2 USD 1.428571
6 F 9 euro 9.000000
7 G 5 USD 3.571429
8 H 8 euro 8.000000
9 I 10 USD 7.142857
10 J 7 HKD 0.875000