исключить номера телефонов определенной страны из столбца с номерами телефонов другого типа - PullRequest
0 голосов
/ 01 февраля 2019

У меня проблема с исключением номеров телефонов конкретной страны из столбца.проблема в том, что они не в одном и том же формате, и в некоторых странах есть 3-значный код страны, например: «001», а в других - 4-значный код страны, например: «0098» пример:

00989121234567
009809121234567
989121234567
9121234567
09121234567   

сначала мне нужночтобы преобразовать все эти форматы в 1 формат и затем исключить их из этого столбца. Номера телефонов должны быть в следующем формате:

"989121234567"

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Для этого можно использовать startsWith и substr (или gsub).Во-первых, вам нужен массив с префиксами:

# variables
country_codes <- c('1', '98')
prefix <- union(country_codes, paste0('00', country_codes))
numbers <- c('00989121234567','009809121234567','989121234567','9121234567','09121234567')

# get rid of prefix
new_numbers <- character(length(numbers))
for (k in seq_along(prefix)) {
  ind <- startsWith(numbers, prefix[k])
  new_numbers[ind] <- substr(numbers[ind], nchar(prefix[k]) + 1, nchar(numbers[ind]))
}
new_numbers[new_numbers == ""] <- numbers[new_numbers == ""]
# results
new_numbers
# [1] "9121234567"  "09121234567" "9121234567"  "9121234567"  "09121234567"

Затем вы можете добавить новые коды стран, например 44,31 и т. Д., Или вы также можете добавить paste0('+', country_codes) в prefix для работы с номерамиформа +1xxxx.

0 голосов
/ 01 февраля 2019

Если вы определили вектор, который включает номер телефона, в виде числа, нули перед ним будут удалены, и вы сможете свободно удалять ненужные номера.

Используя предоставленные номера:

nr <- c(00989121234567,009809121234567,989121234567,9121234567,09121234567)
nr
[1] 9.891212e+11 9.809121e+12 9.891212e+11 9.121235e+09 9.121235e+09


subset(nr,!grepl("^98",nr))
[1] 9121234567 9121234567

РЕДАКТИРОВАТЬ: я вижу, вы добавили требование возврата вектора символов.Вы можете просто использовать функцию as.character () для этого в конечном векторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...