替换不完全10位数的电话号码

时间:2018-05-24 05:58:02

标签: r

如何用NA

替换不具有10位数的电话号码
c(99887766, 998877665521, 9897932453)

预期产出:

NA, NA, 9897932453

4 个答案:

答案 0 :(得分:4)

我们使用Window --> Preferences --> General --> Editors --> Text Editors创建一个逻辑向量,并将那些没有10个字符的对象分配为NA

nchar

或另一种选择是

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

数据

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

答案 1 :(得分:3)

使用简单的数学。我们知道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进行比较。

答案 2 :(得分:2)

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

v1 <- c(99887766, 998877665521, 9897932453)

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

答案 3 :(得分:2)

您可以使用ifelse()

phones <- c(99887766, 998877665521, 9897932453)

ifelse(nchar(phones) != 10, NA, phones)

[1]         NA         NA 9897932453