Конвертация валюты в R - PullRequest
1 голос
/ 26 мая 2019

Я пытаюсь преобразовать валютные значения из фактора в числовой. Формат: 110,5 млн. Евро, 565 тыс. Евро. Мне удалось избавиться от знака евро, букв М и К, но мне также нужно выполнить преобразование, чтобы отобразить 110.5M=110.500.000 и 565K=565.000. Есть ли способ, который вы можете предложить?

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

Данные для преобразования

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

Ответы [ 2 ]

1 голос
/ 26 мая 2019

Вот аналогичная базовая опция 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 
1 голос
/ 26 мая 2019

Опция 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")
...