R中的货币转换

Currency conversion in R

我正在尝试将货币值从因子转换为数字。格式为 €110.5M €565K 我能够去掉 € 符号、M 和 K 字母,但我还需要进行转换以显示 110.5M=110.500.000565K=565.000。有什么方法可以推荐吗?

value<-as.numeric(gsub("[€MK]", "", as.character(strength[1:18207,1])))

待转换数据

€110.5M €565K
€77M    €405K
€118.5M €290K

一个选项是gsubfn

library(gsubfn)
out <- unname(sapply(gsubfn("M|K", list(M = "* 1e6", K = "* 1e3"), 
    sub("€", "", str1)), function(x) eval(parse(text = x))))
out
#[1] 110500000    565000  77000000    405000 118500000    290000

scales::dollar_format(prefix = "", big.mark = ".")(out)
#[1] "110.500.000" "565.000"     "77.000.000"  "405.000"   
#[4] "118.500.000" "290.000"    

数据

str1 <- c("€110.5M",  "€565K", "€77M", "€405K", "€118.5M", "€290K")

这是一个类似的基础 R 选项,使用 sub:

input <- c("€110.5M", "€565K")
exp <- sapply(input, function(x) sub("€(\d+(?:\.\d+)?)K", "\1*1000",
                  sub("€(\d+(?:\.\d+)?)M", "\1*1000000", x)))
exp
sapply(exp, function(x) eval(parse(text=x)))

€110.5M           €565K 
"110.5*1000000"      "565*1000" 
  €110.5M     €565K 
110500000    565000