【问题标题】:Gsub to identify string before first whitespace, only numbersGsub 在第一个空格之前识别字符串,只有数字
【发布时间】:2018-07-27 13:47:07
【问题描述】:

正如标题所说,

这是一些数据

DF<- data.frame(StreetName=c("PO BOX 850", "555 Happy Lane"))

这是我的代码

DF$StreetName <- sub(".*? (.+)", "\\1", DF$StreetName)

我也试过这个

DF$StreetName<- sub("\\d? (.+)", "\\1", DF$StreetName)

但两者都在杀死我的邮政信箱。

我需要的是

   StreetName
    PO BOX 850
    Happy Lane

【问题讨论】:

  • 可能是sub("^\\d+\\s*", "", DF$StreetName)?

标签: r regex gsub


【解决方案1】:

请您尝试关注一下。

val1 <- c("PO BOX 850", "555 Happy Lane")
val1
sub("^[0-9]+[[:space:]]+","",val1)

输出如下。

[1] "PO BOX 850" "Happy Lane"

这以向量为例,您也可以将其用于数据框的值。

【讨论】:

    【解决方案2】:

    我建议使用

    sub("^\\d+\\s*", "", DF$StreetName)
    

    模式匹配

    • ^ - 字符串开头
    • \\d+ - 1 位或多位数字
    • \\s* - 零个或多个空格。

    请注意,如果您只想匹配数字和至少 1 个空格,则需要将 * 替换为 +

    请参阅regex demo

    > DF<- data.frame(StreetName=c("PO BOX 850", "555 Happy Lane"))
    > sub("^\\d+\\s*", "", DF$StreetName)
    [1] "PO BOX 850" "Happy Lane"
    

    【讨论】:

    • 这也是一个很好的答案,也很有效。顺便说一句,您提供的链接非常宝贵。
    猜你喜欢
    • 2015-12-22
    • 2019-06-16
    • 2016-11-17
    • 1970-01-01
    • 2016-04-26
    • 2014-10-18
    • 2021-07-27
    • 2013-03-31
    相关资源
    最近更新 更多