R конвертировать zipcode или lat / long в графство

У меня есть список местоположений, которые содержат город, штат, почтовый индекс, широту и долготу для каждого местоположения.

Я отдельно имею список экономических показателей на уровне графства. Я играл с пакетом ggmap пакетом ggmap и несколькими другими бесплатными сайтами геокодирования, включая файлы Gazeteer США, но не может найти способ сопоставить эти две части.

Есть ли в настоящее время какие-либо пакеты или другие источники, которые это делают?

В итоге я использовал предложение JoshO'Brien упомянутое выше, и нашел здесь .

Я взял его код и изменил state в county как показано здесь:

 library(sp) library(maps) library(maptools) # The single argument to this function, pointsDF, is a data.frame in which: # - column 1 contains the longitude in degrees (negative in the US) # - column 2 contains the latitude in degrees latlong2county <- function(pointsDF) { # Prepare SpatialPolygons object with one SpatialPolygon # per county counties <- map('county', fill=TRUE, col="transparent", plot=FALSE) IDs <- sapply(strsplit(counties$names, ":"), function(x) x[1]) counties_sp <- map2SpatialPolygons(counties, IDs=IDs, proj4string=CRS("+proj=longlat +datum=wgs84")) # Convert pointsDF to a SpatialPoints object pointsSP <- SpatialPoints(pointsDF, proj4string=CRS("+proj=longlat +datum=wgs84")) # Use 'over' to get _indices_ of the Polygons object containing each point indices <- over(pointsSP, counties_sp) # Return the county names of the Polygons object containing each point countyNames <- sapply([email protected], function(x) [email protected]) countyNames[indices] } # Test the function using points in Wisconsin and Oregon. testPoints <- data.frame(x = c(-90, -120), y = c(44, 44)) latlong2county(testPoints) [1] "wisconsin,juneau" "oregon,crook" # IT WORKS 

Совпадение Zipcodes с округами затруднено. (Некоторые почтовые индексы охватывают более одного округа, а иногда и более одного состояния. Например, 30165)

Я не знаю какого-либо конкретного пакета R, который может соответствовать этим требованиям для вас.

Тем не менее, вы можете получить хорошую таблицу из Центра данных переписи Миссури.
Для извлечения данных вы можете использовать следующее: http://bit.ly/S63LNU

Пример вывода может выглядеть так:

  state,zcta5,ZIPName,County,County2 01,30165,"Rome, GA",Cherokee AL, 01,31905,"Fort Benning, GA",Russell AL, 01,35004,"Moody, AL",St. Clair AL, 01,35005,"Adamsville, AL",Jefferson AL, 01,35006,"Adger, AL",Jefferson AL,Walker AL ... 

Обратите внимание на County2. объяснение метаданных можно найти здесь .

  county The county in which the ZCTA is all or mostly contained. Over 90% of ZCTAs fall entirely within a single county. county2 The "secondary" county for the ZCTA, ie the county which has the 2nd largest intersection with it. Over 90% of the time this value will be blank. 

См. Также коды округа ANSI http://www.census.gov/geo/www/ansi/ansi.html

Я думаю, что пакет «noncensus» полезен.

Соответствующий – это то, что я использую для сопоставления zipcode с округом

 ### code for get county based on zipcode library(noncensus) data(zip_codes) data(counties) state_fips = as.numeric(as.character(counties$state_fips)) county_fips = as.numeric(as.character(counties$county_fips)) counties$fips = state_fips*1000+county_fips zip_codes$fips = as.numeric(as.character(zip_codes$fips)) # test temp = subset(zip_codes, zip == "30329") subset(counties, fips == temp$fips) 

Простой вариант – использовать функцию geocode() в ggmap , с опцией output="more" или output="all .

Это может принимать гибкий ввод, например адрес или lat / lon, и возвращает адрес, город, графство, страну, страну, почтовый индекс и т. Д. В качестве списка.

 require("ggmap") address <- geocode("Yankee Stadium", output="more") str(address) $ lon : num -73.9 $ lat : num 40.8 $ type : Factor w/ 1 level "stadium": 1 $ loctype : Factor w/ 1 level "approximate": 1 $ address : Factor w/ 1 level "yankee stadium, 1 east 161st street, bronx, ny 10451, usa": 1 $ north : num 40.8 $ south : num 40.8 $ east : num -73.9 $ west : num -73.9 $ postal_code : chr "10451" $ country : chr "united states" $ administrative_area_level_2: chr "bronx" $ administrative_area_level_1: chr "ny" $ locality : chr "new york" $ street : chr "east 161st street" $ streetNo : num 1 $ point_of_interest : chr "yankee stadium" $ query : chr "Yankee Stadium" 

Другое решение - использовать файл формы переписи и ту же команду over() из вопроса. Я столкнулся с проблемой, используя базовую карту maptools: поскольку она использует базу данных WGS84, в Северной Америке точки, которые находились в нескольких милях от побережья, были неправильно отображены, и около 5% моего набора данных не совпадали.

попробуйте это, используя файлы sp и файлы формы TIGERLine Census

 counties <- readShapeSpatial("maps/tl_2013_us_county.shp", proj4string=CRS("+proj=longlat +datum=NAD83")) # Convert pointsDF to a SpatialPoints object pointsSP <- SpatialPoints(pointsDF, proj4string=CRS("+proj=longlat +datum=NAD83")) countynames <- over(pointsSP, counties) countynames <- countynames$NAMELSAD 
Interesting Posts

C ++ Можно ли определить, указывает ли указатель на действительный объект?

Как эмулировать инициализацию массива C “int arr = {e1, e2, e3, …}” поведение с std :: array?

Увеличить пространство пермгенов

Я хочу скопировать все изображения со всего моего компьютера в одну папку …?

Spring IoC и общий тип интерфейса

создание параметризованных представлений в oracle11g

Как запустить хранимые процедуры в Entity Framework Core?

Должен ли я снова включить .CutCopyMode, прежде чем выйти из моей подпрограммы?

Лучший способ добавить активность в проект Android в Eclipse?

Размер фона с SVG в IE9-10

boost asio async_write: как не чередовать вызовы async_write?

Список всех специальных символов, которые должны быть экранированы в регулярном выражении

Тип контента ‘application / x-www-form-urlencoded; charset = UTF-8’ не поддерживается для @RequestBody MultiValueMap

Получение истинного значения z из буфера глубины

Каков наилучший способ рекурсивного преобразования строки в Java?

Давайте будем гением компьютера.