替换没有正好 10 位数字的电话号码

  • 本文关键字:数字 电话号码 替换 r
  • 更新时间 :
  • 英文 :


如何将没有正好 10 位数字的电话号码替换为 NA

c(99887766, 998877665521, 9897932453)

预期产出:

NA, NA, 9897932453

我们使用nchar创建一个逻辑向量,并将没有 10 个字符的向量赋值为 NA

v1[nchar(v1) != 10] <- NA
v1
#[1]         NA         NA 9897932453

或者另一种选择是

v1[!grepl('^.{10}$', v1)] <- NA

数据

v1 <- c(99887766, 998877665521, 9897932453)

使用简单的数学运算。我们知道log10(1000000000)是 9,log10(10000000000)是 10。因此:

v1 <- c(99887766, 998877665521, 9897932453)
is.na(v1) <- log10(v1) >= 10 | log10(v1) < 9
v1
#[1]         NA         NA 9897932453

我假设输入不会有小数部分。

PS:你甚至不需要日志。您也可以与 1e9 和 1e10 进行比较。

一种方法是使用函数is.na<-
就像帮助页面所说的那样,value是函数参数的索引向量。在本例中为逻辑索引。

v1 <- c(99887766, 998877665521, 9897932453)
is.na(v1) <- nchar(v1) != 10
v1
#[1]         NA         NA 9897932453

您可以使用ifelse()

phones <- c(99887766, 998877665521, 9897932453)
ifelse(nchar(phones) != 10, NA, phones)
[1]         NA         NA 9897932453

最新更新