从地址中删除空格

时间:2019-03-06 11:15:59

标签: stata

最近我得到了一些具有英国地址的数据集。地址是 从扫描的PDF文件中提取文件,并将其中的一些文件作为字符串存储在 不同的变量。

合并并清理后,我得到了一个变量 就像这个例子:

54 Islington Park St, London, N1 1PX
1 00 Upper St, London, N1 0NP
St. Marys Church, Upper St, London, N1 2TX
Camden Passage, 3  3, Islington Green, London, N1 8DU
2 0    7 Upper Street, Islington, LONDON, N1  1RL

问题是某些地址号码和邮政编码中有空格, 不在每个观察中固定。有数千个地址,因此请对其进行修复 不能一一对应。

通常我会按照以下方式做一些事情:

gen fixedaddress=subinstr(address,"3  3","33",1)

但是,这将适用于最后一刻之前的观察,而不适用于其余部分。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果您拥有Stata 14和更高版本,则可以使用新的Unicode正则表达式来实现 引擎:

clear

input str60 address
"54 Islington Park St, London, N1  1PX"
"1 00 Upper St, London, N10NP"
"St. Marys Church, Upper St, London, N1 2TX"
"Camden Passage, 3  3, Islington Green, London, N18DU"
"2 0    7 Upper Street, Islington, LONDON, N1 1RL"
end

generate wanted = ustrregexra(address, "(?<=\d)\s+(?=\d)", "")

list wanted

     +----------------------------------------------------+
     |                                             wanted |
     |----------------------------------------------------|
  1. |                54 Islington Park St, London, N11PX |
  2. |                        100 Upper St, London, N10NP |
  3. |          St. Marys Church, Upper St, London, N12TX |
  4. | Camden Passage, 33, Islington Green, London, N18DU |
  5. |         207 Upper Street, Islington, LONDON, N11RL |
     +----------------------------------------------------+

使用上述正则表达式,函数ustrregexra() 消除位之间的所有空格。 Click here详细了解常规 表达。

如果您使用的是较旧版本的Stata,则消除空间更为实用 首先将各个变量放在一起,然后将所有内容放在一起。