Удалить пробелы из адресов - PullRequest
3 голосов
/ 06 марта 2019

Мне недавно дали несколько наборов данных с адресами в Великобритании. Адреса были извлеченные из отсканированных 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 Ответ

2 голосов
/ 06 марта 2019

Если у вас 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() устраняет все пробелы между цифрами только . Нажмите здесь для подробного объяснения регулярного выражение.

Если у вас более старая версия Stata, будет практичнее устранить пробелы сначала в отдельных переменных, а затем все вместе.

...