【问题标题】:Eliminate the leading '1' in front of US phone numbers in R消除R中美国电话号码前面的前导“1”
【发布时间】:2021-06-17 20:25:00
【问题描述】:

我有一个美国电话号码的向量,其中一些在电话号码的开头有一个前导“1”。如果数字是 11 位长,这意味着第一个数字是我想要摆脱的“1”(至少在我的数据集中)。

phone <- c("1234567890", "1234567890", "5556456890", "5444567890", "19729772976")

我使用

删除了所有空格、标点和破折号
gsub("[- .)(+]|[a-zA-Z]*:?","", phone)

如果字符串长度为 11 个字符,我不确定如何对其进行编码以删除第一个数字。或者换句话说,如果字符串是特定长度,则删除向量中的第一个字符。

【问题讨论】:

  • 使用stringrifelse(str_length(phone) == 11, str_remove(phone, "^1"), phone)

标签: r regex


【解决方案1】:

我们可以使用base R中的sub匹配字符串开头(^)的1,并将10位数字(\\d{10})捕获为一个组((...))直到字符串的结尾 ($),并指定捕获组的反向引用 (\\1) 替换。这将防止丢失 10 位字符串中的任何 1

sub("^1(\\d{10})$", "\\1", phone)

-输出

[1] "1234567890" "1234567890" "5556456890" "5444567890" "9729772976"

【讨论】:

    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 2012-05-22
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多