निम्नलिखित समाधान R-sig-Geo पर Roger Bivand द्वारा पोस्ट पर आधारित है । मैंने ओरेगन से कुछ जनगणना के आंकड़ों के साथ जर्मन शेपफाइल की जगह उसका उदाहरण लिया, जिसे आप यहां से डाउनलोड कर सकते हैं ('ओरेगन काउंटियों और जनगणना डेटा' से सभी शेपफाइल घटकों को लें)।
आइए आवश्यक पैकेजों को लोड करने और आर में शेपफाइल को आयात करने के साथ शुरू करें।
# Required packages
libs <- c("rgdal", "maptools", "gridExtra")
lapply(libs, require, character.only = TRUE)
# Import Oregon census data
oregon <- readOGR(dsn = "path/to/data", layer = "orcounty")
oregon.coords <- coordinates(oregon)
इसके बाद, आपको डेटा एकत्र करने के लिए कुछ ग्रुपिंग वैरिएबल की आवश्यकता होती है। हमारे उदाहरण में, समूहीकरण केवल एकल काउंटी निर्देशांक पर आधारित है। नीचे दी गई छवि देखें, काली सीमाएँ मूल बहुभुजों को दर्शाती हैं, जबकि लाल सीमाएँ बहुभुजों को दर्शाती हैं oregon.id
।
# Generate IDs for grouping
oregon.id <- cut(oregon.coords[,1], quantile(oregon.coords[,1]), include.lowest=TRUE)
# Merge polygons by ID
oregon.union <- unionSpatialPolygons(oregon, oregon.id)
# Plotting
plot(oregon)
plot(oregon.union, add = TRUE, border = "red", lwd = 2)
अब तक सब ठीक है। हालाँकि, मूल आकृति के उप-भाग (जैसे जनसंख्या घनत्व, क्षेत्र, आदि) से संबंधित डेटा विशेषताएँ प्रदर्शन करते समय खो जाती हैं unionSpatialPolygons
। मुझे लगता है कि आप अपने जनगणना के आंकड़ों को शेपफाइल से संबद्ध करना चाहते हैं, इसलिए आपको एक मध्यवर्ती चरण की आवश्यकता होगी।
एकत्रीकरण करने के लिए आपको सबसे पहले अपने बहुभुजों को डेटाफ्रेम में बदलना होगा। अब डेटा विशेषता कॉलम को छह से आठ ("क्षेत्र", "POP1990", "POP1997") पर ले जाएं और उपरोक्त आईडी लगाने वाले फ़ंक्शन के अनुसार उन्हें एकत्र करें sum
।
# Convert SpatialPolygons to data frame
oregon.df <- as(oregon, "data.frame")
# Aggregate and sum desired data attributes by ID list
oregon.df.agg <- aggregate(oregon.df[, 6:8], list(oregon.id), sum)
row.names(oregon.df.agg) <- as.character(oregon.df.agg$Group.1)
अंत में, SpatialPolygonsDataFrame
पहले से एकीकृत आकार प्रदान करने के लिए अपने डेटाफ़्रेम को फिर से वापस लाएँ oregon.union
और आप संक्षेपण एकत्रीकरण चरण से प्राप्त सामान्यीकृत बहुभुज और आपकी जनगणना दोनों डेटा प्राप्त करें।
# Reconvert data frame to SpatialPolygons
oregon.shp.agg <- SpatialPolygonsDataFrame(oregon.union, oregon.df.agg)
# Plotting
grid.arrange(spplot(oregon, "AREA", main = "Oregon: original county area"),
spplot(oregon.shp.agg, "AREA", main = "Oregon: aggregated county area"), ncol = 1)