的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
如果你的目標是做貨幣兌換和這類操作的數據幀的兩列:一個數字的值,貨幣的其他字符(或因素)似乎足夠好 – MasterJedi 2014-09-24 15:07:08
您可以創建一個帶有轉換因子的查找表(或從一些web API獲得一個)。然後,這將很容易做轉換。當然,你可以創建一個貨幣對象併爲其寫一個轉換函數。 Soemone可能已經做到了,並提供了一個包,但我不知道。 – Roland 2014-09-24 15:11:08