Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 文本挖掘中的街道地址清理_Regex_R_Text Mining - Fatal编程技术网

Regex 文本挖掘中的街道地址清理

Regex 文本挖掘中的街道地址清理,regex,r,text-mining,Regex,R,Text Mining,寻找一种方法来删除我目前的文字街道地址。是否有一个正则表达式可以检测数字范围内的文本?我的想法是,我有一个邮政编码,通常在地址的开头有一个数字 加利福尼亚州洛杉矶帕克斯街1234号,邮编90001 我的主要问题是,当我进行其他清理并在集合中查找其他单词时,我想从数据集中删除街道名称 我正在使用Rstudio进行清理。这将返回一个字符向量。阅读正则表达式时,使用paren将其分为三个捕获组:第一个是任意数量的连续数字,后面是任意数量的非数字,后面是5个数字。仅返回第一个和第三个,中间有空格(如果有

寻找一种方法来删除我目前的文字街道地址。是否有一个正则表达式可以检测数字范围内的文本?我的想法是,我有一个邮政编码,通常在地址的开头有一个数字

加利福尼亚州洛杉矶帕克斯街1234号,邮编90001

我的主要问题是,当我进行其他清理并在集合中查找其他单词时,我想从数据集中删除街道名称


我正在使用Rstudio进行清理。

这将返回一个字符向量。阅读正则表达式时,使用paren将其分为三个捕获组:第一个是任意数量的连续数字,后面是任意数量的非数字,后面是5个数字。仅返回第一个和第三个,中间有空格(如果有匹配项),如果没有匹配项,则不进行更改

> gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test)
[1] "1234 90001" "9876 94501"
它需要进一步解析才能返回一组数值向量

> scan( text=gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test), what=list("", "") )
Read 2 records
[[1]]
[1] "1234" "9876"

[[2]]
[1] "90001" "94501"
也许最好将拉链读入字符(因为您希望保留前导零),但可以通过更改
什么
列表类型将街道编号转换为数字:

> scan( text=gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test), what=list( numeric(), "") )
Read 2 records
[[1]]
[1] 1234 9876

[[2]]
[1] "90001" "94501"
要使其更有用,请执行以下操作:

> setNames( data.frame( scan( text=gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test), 
                              what=list( numeric(), "") ) , 
                       stringsAsFactors=FALSE), 
            c( "StrtNumber", "ZIP") )
Read 2 records
  StrtNumber   ZIP
1       1234 90001
2       9876 94501

如果您的地址在结构上不完全相同,那么地理编码可能是您的最佳选择:预期输出是什么<代码>1234 90001?这就是我的目标。每行文本中都混合了不同的信息。有时只是一次谈话的总结。有时这是一种行为,例如“约翰将在加利福尼亚州洛杉矶帕克斯街1234号联系,邮编90001。”