2014-09-24 47 views
2

我必須在R中進行一些計算,並用不同貨幣的貨幣值(例如10.02 DOL,00.12 CAD,123.32 EUR,...)。在R中存儲價值和相應貨幣的最佳方式是什麼?用什麼數據類型或結構來存儲R中的貨幣值和貨幣?

目前我有一個數據框與兩列「價值」和「ReferenceCurrency」等。有沒有一種明智的方式將兩列存儲在一起?

我不要求一種方法來格式化這個作爲輸出,而是將其存儲的方式,我可以做貨幣轉換等操作以取決於它的貨幣價值。

+0

如果你的目標是做貨幣兌換和這類操作的數據幀的兩列:一個數字的值,貨幣的其他字符(或因素)似乎足夠好 – MasterJedi 2014-09-24 15:07:08

+0

您可以創建一個帶有轉換因子的查找表(或從一些web API獲得一個)。然後,這將很容易做轉換。當然,你可以創建一個貨幣對象併爲其寫一個轉換函數。 Soemone可能已經做到了,並提供了一個包,但我不知道。 – Roland 2014-09-24 15:11:08

回答

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