根据另一列更改具有多个值的列

Change column with multiple values based on another column

salary <- c(5000, 3000, 2000, 1000, 5000) 
currency <- c('USD', 'EUR', 'JPY', 'CHF', 'CAD')

df <- data.frame(salary, currency)

我想将所有工资转换为美元,所以如果我想将 3000 转换为美元,我会将 3000 乘以 1.12。它使用 for 循环和 if 语句,但我想知道是否有更快更短的方法。

假设您的汇率为 table:

exchangeRatestoUSD = data.frame(currency = c('USD', 'EUR', 'JPY', 'CHF', 'CAD'),
                                rates = c(1, 2, 2.51, 1.14, 12))
  currency rates
1      USD  1.00
2      EUR  2.00
3      JPY  2.51
4      CHF  1.14
5      CAD 12.00

那么你可以简单地做:

df <- merge(df, exchangeRatestoUSD)
df$USD_salary = df$salary * df$rates

  currency salary rates USD_salary
1      CAD   5000 12.00      60000
2      CHF   1000  1.14       1140
3      EUR   3000  2.00       6000
4      JPY   2000  2.51       5020
5      USD   5000  1.00       5000