我想创建一个没有破折号的新电话号码列。我的数据混合了数字和一些带有破折号的数字。数据如下所示:
电话
555-555-5555
1234567890
555-3456789
222-222-2222
51318312491
我想创建一个没有破折号的新电话号码列。我的数据混合了数字和一些带有破折号的数字。数据如下所示:
电话
555-555-5555
1234567890
555-3456789
222-222-2222
51318312491
由于您正在处理一个非常简单的替换,因此您可以轻松gsub
地找到要删除的字符并将其替换为空。
假设您的数据集称为“mydf”并且感兴趣的列是“Phone”,请尝试以下操作:
gsub("-", "", mydf$Phone)
基于@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 突然出现!]