【问题标题】:Change column with multiple values based on another column根据另一列更改具有多个值的列
【发布时间】:2025-12-22 20:25:06
【问题描述】:
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 语句,但我想知道是否有更快更短的方法。

【问题讨论】:

  • 没有汇率就无法转换。
  • 忘记在这里添加了,不用担心,我只是在寻找与 for 循环不同的方式
  • 我建议将汇率合并到您的 df 中,然后只需执行 df$USD_salary = df$salary * df$convert
  • 我在数据框中有 30k 行,
  • 拥有 30k 行并不妨碍使用 Maels 答案,这很可能是最简洁的方法

标签: r dataframe


【解决方案1】:

假设您有一张汇率表:

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

【讨论】:

    最近更新 更多