【问题标题】:Removing Multiple Characters from a String Using Stringr [duplicate]使用 Stringr 从字符串中删除多个字符 [重复]
【发布时间】:2016-09-23 20:22:21
【问题描述】:

我对在 R 中处理字符串相当陌生。下面是一个简单的数据框,其中包含各种不同的电话号码输入,包括一些根本没有数字而只有括号或连字符的条目。我正在寻找一种将所有数字转换为 9999999999 的方法。所以基本上我想删除所有非数字符号和空格。没有数字的条目将成为空单元格。

有没有一种简单的方法可以使用 gsub 或使用 Stringr 或 Tidyr 来做到这一点?我不确定解决方案是否需要正则表达式。

names<-c("Mike","James","Melissa","Chris","John","Jake")

numbers<-c("(999)-999-9999","999-999-9999","(999) 999-9999","(999)-999 9999","(   )","    -")

Names2<-data.frame(numbers,names)

Names2$numbers<-as.character(Names2$numbers)

【问题讨论】:

  • 正则表达式是你的朋友 - gsub("[^0-9]", "", Names2$numbers)
  • 谢谢,如此简单优雅。一个简单的问题,如何用 NA 填充空单元格?

标签: regex r tidyr stringr


【解决方案1】:

我们可以使用

Names2$numbers <- gsub("\\D+", "", Names2$numbers)
as.numeric(Names2$numbers)
#[1] 9999999999 9999999999 9999999999 9999999999         NA         NA

正如OP提到的string

library(stringr)
as.numeric(str_replace_all(Names2$numbers, "\\D+", ""))
#[1] 9999999999 9999999999 9999999999 9999999999         NA         NA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多