【问题标题】:How to extract numbers from character in R [duplicate]如何从R中的字符中提取数字[重复]
【发布时间】:2020-03-03 11:11:11
【问题描述】:

我有一列的值是 C(1)、C(2)、...C(30)、C(31),我只需要提取数字。

x<-as.character(c("C(1)", "C(2)", "C(3)"))

a<-as.numeric(substr(x,3,3))

substr() 没有帮助,因为对于 2 位数字,我需要 substr 3 和 4 值。

【问题讨论】:

  • 嗨试试这个希望这会有所帮助。 x1 &lt;- ifelse(nchar(x==1),substr(x,3,3),substr(x,3,4))
  • 来自 stringr 包:stringr::str_extract(x, "[0-9]+")

标签: r extract


【解决方案1】:

您可以使用正则表达式来删除所有非数字字符。这可以使用不同的功能来完成。我喜欢使用stringr 包来处理字符:

library(stringr)

x <- as.character(c("C(1)", "C(2)", "C(3)"))

# Replace all non numerical characters to a empty space
y <- str_replace_all(x, "[^0-9]", "" )

a <- as.numeric(y)

【讨论】:

    【解决方案2】:

    我认为最简单和最快的方法是使用正则表达式来匹配数字:

    x <- as.character(c("C(1)", "C(2)", "C(30)"))
    vec <- as.numeric(regmatches(x, regexpr("\\d+", x)))
    vec
    # Output:
    1 2 30
    

    【讨论】:

    • 用这个字符串试试:c("C(1)", "C(20)", "C(3)")
    • 谢谢你把我拉到这个上面。我修改了上面的代码。
    • 谢谢你们,所有方法都奏效了!
    猜你喜欢
    • 2017-02-17
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2020-11-02
    • 2018-12-14
    相关资源
    最近更新 更多