在我的数据框中,有一个包含乘数指标的列,例如数千,数百,数百万等,作为文字。
我想将它们转换为数字。这就是我尝试过的:
a <- c("Thousands", "thousands", "Hundreds", "hundreds")
newA <- as.numeric(gsub("[Tt]housands","1000",gsub("[Hh]undreds","100",a)))
哪个有效,但是当有很多乘数时(结果如此),结果非常麻烦。我认为应该有一种方法可以在一次gsub
调用中执行此操作,但无法执行此操作。像这样的东西是我想要的(当然这个特殊的尝试不起作用):
as.numeric(gsub("^.*-","",gsub("([Hh]undreds)([Tt]housands)","\\1-100 \\2-1000",a)))
答案 0 :(得分:5)
尝试:
library(qdap)
as.numeric(multigsub(c("[Tt]housands", "[Hh]undreds"), c(1000, 100), fixed = FALSE, a))
或者按照@RichardScriven的建议:
library(stringi)
as.numeric(stri_replace_all_regex(a, c("[Tt]housands", "[Hh]undreds"), c(1000, 100),
vectorize_all = FALSE))