GeoDistPSU | R Documentation |
Combine geographic areas into primary sampling units to limit travel distances
GeoDistPSU(lat, long, dist.sw, max.dist, Input.ID = NULL)
lat |
latitude variable in an input file. Must be in decimal format. |
long |
longitude variable in an input file. Must be in decimal format. |
dist.sw |
units for distance; either |
max.dist |
maximum distance allowed within a PSU between centroids of geographic units |
Input.ID |
ID field in the input file if present |
GeoDistPSU
combines geographic secondary sampling units (SSUs), like cities or census block groups, into primary sampling units (PSUs) given a maximum distance allowed between the centroids of the SSUs within each grouped PSU. The input file must have one row for each geographic unit. If the input file does not have an ID field, the function will create a sequential ID that is appended to the output. The latitude and longitude input vectors define the centroid of each input SSU. The complete linkage method for clustering is used. GeoDistPSU
calls the functions distm
and distHaversine
from the geosphere
package to calculate the distances between centroids.
A list with two components:
PSU.ID |
A data frame with the same number of rows as the input file. Column names are |
PSU.Info |
A data frame with the number of rows equal to the number of PSUs that are created. Column names are |
.
George Zipf, Richard Valliant
GeoDistMOS
, GeoMinMOS
data(Test_Data_US)
g <- GeoDistPSU(Test_Data_US$lat,
Test_Data_US$long,
"miles", 100,
Input.ID = Test_Data_US$ID)
# Plot GeoDistPSU output
plot(g$PSU.Info$PSU.Mean.Longitude,
g$PSU.Info$PSU.Mean.Latitude,
col = 1:nrow(g$PSU.Info),
pch = 19,
main = "Plot of PSU Centers",
xlab = "Longitude",
ylab = "Latitude")
grid(col = "grey40")
# Plot GeoDistPSU output with map
## Not run:
library(ggplot2)
library(sp)
library(usmap)
# Transform PSUs into usmap projection
g.map <- cbind(long = g$PSU.Info$PSU.Mean.Longitude,
lat = g$PSU.Info$PSU.Mean.Latitude)
g.map <- as.data.frame(g.map)
g.proj <- usmap::usmap_transform(g.map,
input_names = c("long", "lat"),
output_names = c("Long", "Lat"))
usmap::plot_usmap(color = "gray") +
geom_point(data = g.proj,
aes(x = Long,
y = Lat))
# Create histogram of maximum distance
hist(g$PSU.Info$PSU.Max.Dist,
main = "Histogram of Maximum Within-PSU Distance",
xlab = "Distance",
ylab = "Frequency")
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.