df
特定の列の金額をユーロで変換するという名前のデータフレームがあります(変数$ currency.Codeで指定)。このためにtaux_change_vers_EUR
、2つの変数で名前が付けられた別のデータフレームがあります:(1)通貨の名前、(2)ユーロで変換する為替レート。
データフレームの2番目の列の係数をデータフレームのtaux_change_vers_EUR
いくつかの列に適用したいと思いdf
ます。問題は、私のdfが非常に大きいため、操作を最適化する必要があることです(forループも)。アイデアはありますか?
これがコードの一部です。このコードは機能しませんが、私が期待していることを示しています。
for (devise in unique(df$currency.Code)){
df[df$currency.Code==devise,c(4:37,44:48)] <- df[df$currency.Code==devise,c(4:37,44:48)]*rep(as.numeric(taux_change_vers_EU R[taux_change_vers_EUR[,1]==devise,2]),39)
}
2番目のデータフレームは次のようになります。
taux_change_vers_EUR
V1 V2
1 USD 1.14720
2 CAD 1.48836
3 GBP 0.87869
4 EUR 1.00000
5 <NA> 1.00000
6 DKK 6.50221
7 SEK 9.10235
8 PLN 3.76455
9 CZK 22.49280
10 NOK 8.28273
11 TRY 6.12973
12 TWD 30.98320
13 CNY 6.92256
14 HKD 7.83296
15 JPY 113.16000
マッチを使用できます:
# example data borrowed from @JohnCoene
df1 <- data.frame(
currency = c("USD", "GBP", "JPY", "CAD"),
rate = c(1.2, 0.9, 0.8, 1.5))
set.seed(1); df2 <- data.frame(
value = 1,
currency = sample(df1$currency, 5, replace = TRUE))
df2$velueNew <- df2$value * df1$rate[ match(df2$currency, df1$currency) ]
df2
# value currency velueNew
# 1 1 GBP 0.9
# 2 1 GBP 0.9
# 3 1 JPY 0.8
# 4 1 CAD 1.5
# 5 1 USD 1.2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加