Удаление нескольких символов из строки с помощью Stringr

Я новичок в работе со строками в 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)

person Mike    schedule 26.05.2016    source источник
comment
регулярное выражение — ваш друг — gsub("[^0-9]", "", Names2$numbers)   -  person jeremycg    schedule 26.05.2016
comment
Спасибо, так просто и изящно. Один быстрый вопрос, как мне заполнить пустые ячейки NA?   -  person Mike    schedule 26.05.2016


Ответы (1)


Мы можем использовать

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

Как упомянул ОП о string,

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