Разделение строк географических данных в R - PullRequest
2 голосов
/ 20 апреля 2020

Я работаю с данными QECW от BLS и хотел бы сделать географические данные включенными более полезными. Я хочу разбить столбец "area_title" на разные столбцы - один с именем области, один с уровнем области, а другой с состоянием.

Я неплохо начал, используя отдельные:

qecw <- qecw %>% separate(area_title, c("county", "geography level", "state"))

Проблема в том, что существует множество способов, которыми географические данные объединяются в строки, что делает их недостаточно единообразными для чистого разделения. Столбец area_title содержит имена в форматах, которые довольно четко разделяются, например:

area_title

Alabama -- Statewide
Autauga County, Alabama

, который довольно хорошо разбивается на

county    geography level    state

Alabama   Statewide          NA
Autauga   County             Alabama

, но разбивается на случаи, подобные:

area_title

Aleutians West Census Area, Alaska
Chattanooga-Cleveland-Dalton TN-GA-AL CSA
U.S. Combined statistical Areas, combined

, а также любые штаты, округа или другие географические названия, содержащие более одного слова.

Я могу go в каждом конкретном случае их исправить, но я был бы признателен за более эффективное решение ,

Точные данные, которые я использую: «2019.q1-q3 10 10 Итого по всем отраслям», доступны по ссылке в разделе «Квартальные данные за текущий год, сгруппированные по отраслям».

Спасибо !

1 Ответ

0 голосов
/ 20 апреля 2020

До сих пор я придумал это:

Я могу получить название места, выбрав подстроку area_title со всем слева от первой запятой:

qecw <- qecw %>% mutate(location = sub(",.*","", qecw$area_title))

Тогда я иметь ряд вложенных операторов if_else для создания типа местоположения:

 mutate(`Location Type` = 
           if_else(str_detect(area_title, "Statewide"), "State", 
           if_else(str_detect(area_title, "County"), "County",
           if_else(str_detect(area_title, "CSA"), "CSA",
           if_else(str_detect(area_title, "MSA"), "MSA",
           if_else(str_detect(area_title, "MicroSA"), "MicroSA",
           if_else(str_detect(area_title, "Undefined"), "Undefined",
                                                           "other")))))))

Это не полный ответ; Я думаю, что мне все еще не хватает некоторых типов местоположений, и я еще не нашел хороший способ извлечения названий состояний.

...