2016-05-26 10 views
1

Я довольно новичок в работе со строками в R. Ниже представлен простой фреймворк с множеством различных входов для телефонных номеров, включая некоторые записи без каких-либо цифр и просто скобки или дефис. Я ищу способ конвертировать все числа в 9999999999. Поэтому в основном я хочу удалить все нечисловые символы и пробелы. Записи без номеров просто станут пустыми ячейками.Удаление нескольких символов из строки с использованием Stringr

Есть ли простой способ сделать это с помощью 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) 
+0

регулярное выражение является вашим другом - 'GSUB ("[^ 0-9]", "", Names2 $ numbers) ' – jeremycg

+0

Спасибо, так просто и элегантно. Один быстрый вопрос, как заполнить пустые ячейки NA? – Mike

ответ

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