我想创建一个没有短划线的新电话号码列。我的数据只是数字和一些带破折号的数字。数据如下:
电话
555-555-5555
1234567890个
555-3456789
222-222-2222
51318312491
答案 0 :(得分:10)
由于您正在处理非常简单的替换,因此您可以轻松地使用gsub
来查找要删除的字符,并将其替换为空。
假设您的数据集名为“mydf”且感兴趣的列为“Phone”,请尝试以下操作:
gsub("-", "", mydf$Phone)
答案 1 :(得分:4)
在@Ananda Mahto的答案的基础上,显示如何再次打破数字并在区号周围加上括号似乎很有用。
phone <- c("1234567890", "555-3456789", "222-222-2222", "5131831249")
phone <- gsub("-", "", phone)
gsub("(^\\d{3})(\\d{3})(\\d{4}$)", "(\\1) \\2 \\3", phone)
[1] "(123) 456 7890" "(555) 345 6789" "(222) 222 2222" "(513) 183 1249"
第二个正则表达式创建三个捕获组,两个有三个数字,最后一个有四个。然后R将它们替换回来,在第一个和()周围的空间之间。您还可以在捕获组2和捕获组3之间放置连字符。[不确定为什么Skype突然出现!]