当SSN无效时,我试图用相应的id变量值替换SSN值。我所拥有的代码将其替换为索引。以下是一些示例数据和我的代码:
SSN <- data.frame(SSN = c("123-45-6789", "MR1-23-4567", "666786543", "800445678",
"45678AB90", "77212345", "987654321", "234-56-7890", "123004567", "000345678"),
id = c("3005", "3006", "3007", "3008", "3009", "3010", "3011", "3012", "3013", "3014" ))
SSN$SSN <- gsub('-','', SSN$SSN)
SSN$SSN <- ifelse(grepl('\\d{9}', SSN$SSN), SSN$SSN, SSN$id)
结果如下:
SSN id
1 123456789 3005
2 2 3006
3 666786543 3007
4 800445678 3008
5 5 3009
6 6 3010
但我需要的是:
SSN id
1 123456789 3005
2 3006 3006
3 666786543 3007
4 800445678 3008
5 3009 3009
6 3010 3010
非常感谢任何帮助!提前谢谢!
答案 0 :(得分:0)
SSN$id
的班级是factor
。取水平以获得所需的输出。那就是:
SSN$SSN <- ifelse(grepl('\\d{9}', SSN$SSN), SSN$SSN, levels(SSN$id))