【问题标题】:Separating geographical data strings in R在R中分离地理数据字符串
【发布时间】:2020-04-20 16:33:30
【问题描述】:

我正在与QECW data from 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

以及包含多个单词的任何州、县或其他地名。

我可以逐个解决这些问题,但我希望有一个更有效的解决方案。

我使用的确切数据是“2019.q1-q3 10 10 Total,所有行业”,可在“按行业分组的当年季度数据”下的链接中找到。

谢谢!

【问题讨论】:

    标签: r tidyverse stringr


    【解决方案1】:

    到目前为止,我想出了这个:

    我可以通过选择 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")))))))
    

    这不是一个完整的答案;我想我仍然缺少一些位置类型,而且我还没有想出一个提取州名的好方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多