【问题标题】:Fixing the dataset for zipcode to county conversion in R修复 R 中邮政编码到县转换的数据集
【发布时间】:2021-01-09 04:34:57
【问题描述】:

我有这个数据集,可以很好地将邮政编码转换为县,但问题是它没有以传统方式列出所有邮政编码(尽管其中大部分都列在正常的 5 位格式)。例如:无法找到的 10090 或 10080,因为它在数据集中列为“100HH”。 29071 也找不到,因为它被列为“290XX”(另外,我认为他们可能把这个县弄错了,因为我认为它应该是列克星敦县,而不是里奇兰,但我不确定)。我想要这样,如果有人输入“10090”,它将被解释为“100HH”以找到正确的县。这看起来很简单,但我在这个数据集中发现了 1100 多个不同的“XX”和“HH”邮政编码。任何建议都是有帮助的!谢谢!

library(httr) 
urlCounties <- "https://raw.githubusercontent.com/scpike/us-state-county-zip/master/geo-data.csv"
zipcodeToCountyData <- content(GET(urlCounties), type = 'text/csv')

zipcodeToCounty<- function(zip) {
    tbl.county <- subset(zipcodeToCountyData, zipcode == zip) 
      countyName <- tbl.county$county
      stateName <- tbl.county$state
      return(list(countyName, stateName))
}

【问题讨论】:

  • 是否有一个公用键,使得H 可以表示任何数字?或者HH 仅对一组特定区域具有特殊含义? X 在这方面有何不同? (为什么这些状态是错误的?我不知道有什么地方认为 New yorkNew mexico 是正确的。似乎有些代码对 "Sentence case conversion" 与 “标题大小写转换”.)
  • 后见之明:census.gov defines ZCTAs HH 用于没有邮政编码的大片水域,ZZ 是没有邮政编码的大片土地;在 2010 年的人口普查中,据称这种做法已被淘汰。 *耸耸肩*

标签: r database dataframe dataset


【解决方案1】:

您可以使用以下内容。但我不太确定你想如何决定是要 XX 还是要 HH。

library(tidyverse)
zipcodeToCounty<- function(zip) {
  tbl.county <- subset(zipcodeToCountyData, zipcode == zip) 
  if(nrow(tbl.county)==0){
    tbl.county <- zipcodeToCountyData %>% 
      filter(str_sub(zipcode, 1,3) == str_sub(zip,1,3)) %>% 
      arrange(zipcode) %>% ## HH as first choice ??
      head(1)
  }
  countyName <- tbl.county$county
  stateName <- tbl.county$state
  return(list(countyName, stateName))
}

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多