R gsub一次替换多个文本

时间:2015-11-16 18:36:53

标签: regex r gsub

在我的数据框中,有一个包含乘数指标的列,例如数千,数百,数百万等,作为文字

我想将它们转换为数字。这就是我尝试过的:

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)))

1 个答案:

答案 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))