如何使用mutate函数为DataFrame货币字段添加汇率列
解答
完全可以通过mutate()实现该操作,搭配条件匹配函数就能快速完成货币符号到汇率的映射。
具体实现代码
你可以使用dplyr包中的mutate()配合case_when()做逐行条件判断,直接生成目标列:
# 加载dplyr包 library(dplyr) # 复现示例输入数据 dat <- data.frame( currency = c("$", "€", "£", "¥") ) # 新增汇率列 dat <- dat %>% mutate( ex_rate = case_when( currency == "$" ~ 1, currency == "€" ~ 0.8, currency == "£" ~ 0.55, currency == "¥" ~ 130, TRUE ~ NA_real_ # 未匹配到的货币默认填充NA,可按需修改 ) )
运行上述代码后得到的输出和预期结果完全一致:
currency ex_rate 1 $ 1.00 2 € 0.80 3 £ 0.55 4 ¥ 130.00
更适合多货币场景的方案
如果你需要处理的货币种类较多,更推荐单独维护一份货币-汇率映射表,通过左连接的方式匹配汇率,后续更新汇率时只需要修改映射表即可,不用改动匹配逻辑,示例代码如下:
# 单独维护汇率映射表 rate_ref <- data.frame( currency = c("$", "€", "£", "¥"), ex_rate = c(1, 0.8, 0.55, 130) ) # 连接匹配得到结果 dat <- left_join(dat, rate_ref, by = "currency")
内容的提问来源于stack exchange,提问作者ManjiroSano
相关产品推荐
相关产品推荐

