【问题标题】:R cleaning up a character and converting it into a numericR清理字符并将其转换为数字
【发布时间】:2012-03-16 14:53:13
【问题描述】:

R 清理字符串并将其转换为数字

我有一个字符串

abc <-  " 267750Â"

class(abc)
"character"

我需要对 abc 做些什么来摆脱“”并将其从字符转换为数字。 也许 as.numeric 会起作用,但我需要先去掉“”。

我想把上面的转换成:

abc
267750
class(abc)
 "numeric"

感谢您的帮助。

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以用正则表达式解析出你不想要的东西:

    test <- "532.dcx3vds98"
    destring <- function(x,keep="0-9.") {
      return( as.numeric(gsub(paste("[^",keep,"]+",sep=""),"",x)) )
    }
    destring(test)
    

    返回532.398

    编辑

    现在在taRifx:

    library(taRifx)
    test <- "532.dcx3vds98"
    destring(test)
    

    【讨论】:

    • 这很有帮助。非常感谢。
    • 当然。我可能会将该功能添加到taRifx 的下一个版本中,以便更易于使用。如果有人认为需要添加任何聪明的功能(或更好的功能名称),请告诉我。
    【解决方案2】:

    使用stringr 会短一点:

        # load library
        library(stringr)
        # load data
        abc <-  "Â 267750Â"
        # extract digits
        abc <- as.numeric(str_extract(abc, "[0-9]+"))
        # check the result
        abc
        [1] 267750
        class(abc)
        [1] "numeric"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2011-01-29
      • 2016-03-05
      相关资源
      最近更新 更多