Using the spatial visualization techniques, explore this data set on Pennsylvania hospitals (http://www.arcgis.com/home/item.html?id=eccee5dfe01e4c4283c9be0cfc596882). Create a series of 5 maps that highlight spatial differences in hospital service coverage for the state of PA.
Use foreign package to read the dbf dataset.
## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.1.0 ✔ purrr 0.2.5
## ✔ tibble 2.1.3 ✔ dplyr 0.7.8
## ✔ tidyr 0.8.2 ✔ stringr 1.3.1
## ✔ readr 1.2.1 ✔ forcats 0.3.0
## Warning: package 'tibble' was built under R version 3.5.2
## ── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## Warning: package 'ggmap' was built under R version 3.5.2
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
The dataset contains a number of variables about each hospital, many of them are clear and straight forward.
glimpse(dat)
## Observations: 275
## Variables: 119
## $ acc_trauma <fct> N, N, N, N, N, Y, N, N, N, N, N, N, N, Y, Y, N, N, N,…
## $ air_amb <fct> N, Y, N, N, N, Y, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ als <fct> N, Y, N, Y, N, N, Y, N, N, N, N, Y, Y, N, Y, N, N, Y,…
## $ arc_street <fct> 400 Holland Ave, 201 Reeceville Rd, 1001 E Second St,…
## $ arc_zone <fct> 15104, 19320, 16915, 16407, 18411, 15905, 15317, 1701…
## $ bas_ls <fct> N, N, N, Y, N, N, Y, N, N, N, N, Y, Y, N, Y, N, N, N,…
## $ bassinets <dbl> NA, 10, 12, NA, NA, 20, NA, 10, 22, NA, 10, NA, 22, N…
## $ bb_id <fct> 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 7…
## $ bc_beds <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ bc_sus_bed <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ beds_sus <dbl> 132, 173, 35, 35, 242, 485, 104, 155, 238, 145, 69, 4…
## $ birthing_r <dbl> NA, NA, 3, NA, NA, NA, NA, 6, 12, NA, NA, NA, NA, NA,…
## $ bone_marro <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ burn_car <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N,…
## $ burn_care <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N,…
## $ card_beds <dbl> NA, NA, NA, NA, NA, 11, NA, NA, 11, NA, NA, NA, NA, N…
## $ card_surge <fct> N, Y, N, N, N, Y, N, N, N, N, N, N, Y, Y, Y, N, N, N,…
## $ card_sus_b <dbl> NA, NA, NA, NA, NA, 11, NA, NA, 11, NA, NA, NA, NA, N…
## $ cardiac <fct> N, N, N, N, N, Y, N, N, Y, N, N, N, N, N, Y, N, N, N,…
## $ cardiac_ca <fct> N, Y, N, N, N, Y, N, Y, Y, Y, N, N, Y, Y, Y, N, N, N,…
## $ cardio_reh <fct> N, N, Y, Y, N, Y, N, N, Y, N, Y, Y, Y, Y, Y, N, N, N,…
## $ chemo <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, Y,…
## $ city <fct> Braddock, Coatesville, Coudersport, Corry, Clarks Sum…
## $ clin_lab <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, Y, Y, Y, Y, Y, N, Y,…
## $ clin_psych <fct> N, N, N, Y, Y, Y, N, N, Y, N, N, N, N, Y, Y, Y, Y, N,…
## $ county <fct> Allegheny, Chester, Potter, Erie, Lackawanna, Cambria…
## $ countyname <fct> Allegheny, Chester, Potter, Erie, Lackawanna, Cambria…
## $ ct_scan <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, N, Y,…
## $ cty_key <fct> 42003, 42029, 42105, 42049, 42069, 42021, 42125, 4204…
## $ cystoscopi <fct> Y, N, N, N, N, Y, N, N, Y, Y, N, N, N, N, N, Y, N, N,…
## $ deliv_rms <dbl> NA, 2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ dental <fct> Y, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N,…
## $ detox_alc_ <fct> Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ diag_radio <fct> Y, N, Y, Y, N, Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, N, Y,…
## $ diag_xray <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, Y,…
## $ doh_hosp <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y,…
## $ doh_phone <fct> 4126365000, 6103838000, 8142749300, 8146644641, 57058…
## $ emer_dept <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, N, Y,…
## $ endoscopie <fct> Y, N, Y, N, N, Y, Y, N, Y, Y, N, N, Y, Y, Y, Y, N, Y,…
## $ fac_id <fct> 0252, 0258, 0318, 0340, 0355, 0356, 0357, 0358, 0360,…
## $ facility <fct> UPMC Braddock, Brandywine Hospital, Charles Cole Memo…
## $ flu_old <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y,…
## $ fred_con_1 <fct> "Director Emergency Services", "Safety Officer", "Saf…
## $ fred_conta <fct> "Diane Dunn", "Randy J. Scott", "Alonzo Bunch", NA, "…
## $ fred_email <fct> dunndl@upmc.edu, randy_scott@chs.net, alonzo.bunch@ch…
## $ fred_fax <fct> 4126365215, 6103838379, 8142748772, 8146643657, 50758…
## $ fred_hosp <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y,…
## $ fred_pager <fct> NA, 8882214676, 8142743720, 8146641018, NA, 814244925…
## $ fred_phone <fct> 4126365201, 6103838799, 8142745490, 8146644641, 50758…
## $ gamma_knif <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ gen_outpat <fct> N, N, Y, N, N, Y, N, N, N, N, N, Y, N, N, Y, Y, N, N,…
## $ gene_counc <fct> N, N, N, N, N, N, N, Y, N, N, N, N, N, N, Y, N, N, Y,…
## $ heart_tran <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ helipad <fct> N, Y, Y, Y, N, Y, Y, Y, Y, N, Y, Y, N, Y, Y, N, N, N,…
## $ hemodial_c <fct> N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, Y,…
## $ hemodial_m <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ hosp_id <fct> 025200, 025800, 031800, 034000, 035500, 035600, 03570…
## $ hospice <fct> Y, Y, Y, Y, N, Y, N, N, N, Y, Y, Y, N, Y, Y, Y, N, Y,…
## $ hyper_cham <fct> N, N, N, N, N, N, N, Y, N, N, N, N, Y, Y, Y, Y, N, N,…
## $ icu <fct> N, N, N, Y, N, Y, N, N, Y, N, N, Y, N, N, Y, N, N, N,…
## $ icu_beds <dbl> NA, NA, NA, 2, NA, 14, NA, NA, 7, NA, NA, 6, NA, NA, …
## $ icu_sus_be <dbl> NA, NA, NA, 2, NA, 14, NA, NA, 7, NA, NA, 6, NA, NA, …
## $ inpat_flu_ <dbl> 540, 72, 127, 30, 24, 101, 32, 391, 293, 261, 36, 72,…
## $ inpat_pneu <dbl> 585, 110, 80, 22, 10, 60, 47, 440, 316, 372, 90, 128,…
## $ kidney_tra <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ labor_rms <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ lic_beds <dbl> 163, 173, 72, 35, 242, 577, 104, 165, 240, 164, 74, 4…
## $ lic_dent <dbl> 4, 2, NA, NA, 1, 6, 1, 2, 7, 2, NA, NA, 13, 3, 6, 5, …
## $ lic_dos <dbl> 15, 25, 5, 5, 3, 34, 21, 22, 17, 40, 30, 29, 46, 34, …
## $ lic_mds <dbl> 292, 108, 27, 8, 12, 238, 92, 110, 241, 264, 17, 77, …
## $ lic_pod <dbl> 10, 2, 2, 1, NA, 6, 1, 5, 12, 11, 3, 3, 15, 21, 29, 4…
## $ linear_acc <fct> N, N, Y, N, N, N, N, Y, Y, N, N, N, Y, N, Y, Y, N, Y,…
## $ lithotrips <fct> N, Y, N, N, N, Y, Y, N, Y, Y, Y, N, N, N, Y, Y, N, Y,…
## $ liver_tran <fct> N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ loc_method <fct> R, R, R, R, R, G, R, R, R, R, R, R, R, R, R, R, R, R,…
## $ ltc <fct> Y, N, Y, N, N, Y, N, N, N, N, Y, Y, N, N, N, N, N, N,…
## $ mcd <fct> 07992, 82576, 16448, 16296, 54136, 38288, 55432, 1127…
## $ mcd_key <fct> 4200307992, 4202982576, 4210516448, 4204916296, 42069…
## $ mcd_name <fct> Braddock Borough, West Brandywine Township, Couderspo…
## $ medical <fct> N, N, Y, N, N, Y, N, N, N, N, N, Y, N, N, Y, Y, N, N,…
## $ mob_ccu <fct> N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N,…
## $ mob_icu <fct> N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N,…
## $ mri <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, N, Y,…
## $ ms1 <fct> NA, Limerick/Peach Bottom, NA, NA, NA, NA, NA, TMI, N…
## $ neo2_beds <dbl> NA, NA, NA, NA, NA, NA, NA, 6, NA, NA, NA, NA, 6, NA,…
## $ neo2_sus_b <dbl> NA, NA, NA, NA, NA, NA, NA, 6, NA, NA, NA, NA, 6, NA,…
## $ neo3_beds <dbl> NA, NA, NA, NA, NA, 16, NA, NA, NA, NA, NA, NA, NA, 1…
## $ neo3_sus_b <dbl> NA, NA, NA, NA, NA, 16, NA, NA, NA, NA, NA, NA, NA, 1…
## $ neuro_surg <fct> Y, Y, N, N, N, Y, Y, N, Y, N, N, N, Y, Y, Y, N, N, N,…
## $ neurology <fct> Y, Y, Y, N, N, Y, Y, Y, Y, Y, N, N, Y, Y, Y, N, N, Y,…
## $ obs_gyn <fct> N, N, N, N, N, Y, N, N, N, N, N, N, N, N, Y, N, N, N,…
## $ occ_ther <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y,…
## $ optometry <fct> Y, N, N, N, Y, N, N, N, Y, N, N, N, N, N, N, N, N, Y,…
## $ organ_bank <fct> N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N,…
## $ ped_trauma <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ pediatric <fct> N, N, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N,…
## $ pet <fct> N, Y, Y, N, N, N, Y, Y, Y, Y, Y, N, Y, N, Y, N, N, Y,…
## $ pharmacy <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y,…
## $ phys_med <fct> N, N, Y, N, N, Y, N, Y, N, N, N, N, N, N, Y, Y, N, N,…
## $ phys_ther <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, Y,…
## $ podiatry <fct> Y, Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y,…
## $ providerid <dbl> 69, 148, 515, 185, 2498, 105, 327, 162, 190, 297, 150…
## $ psych <fct> N, N, N, N, N, Y, N, N, N, N, N, N, N, N, Y, Y, N, N,…
## $ psych_inpa <fct> Y, Y, Y, Y, Y, Y, N, N, Y, N, N, N, N, Y, Y, Y, Y, N,…
## $ reg_trauma <fct> NA, NA, NA, NA, NA, Level I, NA, NA, NA, NA, NA, NA, …
## $ resp_ther <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, Y,…
## $ so_flu_65u <fct> Y, Y, Y, Y, N, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, Y,…
## $ social_wor <fct> Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y,…
## $ speech_pat <fct> Y, Y, Y, Y, Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, N, Y,…
## $ street <fct> 400 Holland Avenue, 201 Reeceville Road, 1001 East Se…
## $ surgical <fct> N, N, Y, Y, N, Y, N, N, N, N, N, Y, N, Y, Y, N, N, N,…
## $ surgical_s <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, Y,…
## $ thera_radi <fct> N, N, N, N, N, Y, N, Y, Y, Y, N, N, Y, N, Y, N, N, Y,…
## $ typ_org <fct> "Non-profit Corp.", "Corporation", "Non-profit Corp."…
## $ typ_serv <fct> General Medical and Surgical, General Medical and Sur…
## $ ultrasound <fct> Y, Y, Y, Y, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, N, Y,…
## $ x <dbl> -79.87045, -75.79037, -78.01691, -79.65331, -75.73740…
## $ y <dbl> 40.40503, 40.01106, 41.77469, 41.92461, 41.48050, 40.…
## $ zip <fct> 15104, 19320, 16915, 16407, 18411, 15905, 15317, 1710…
This is an overview of all the data points of the hospital in PA, this depicts all the hospitals scattered in PA.
qmplot(x, y, data = dat, main = "Hospitals in Pennsylvania")
## Using zoom = 8...
## Source : http://tile.stamen.com/terrain/8/70/94.png
## Source : http://tile.stamen.com/terrain/8/71/94.png
## Source : http://tile.stamen.com/terrain/8/72/94.png
## Source : http://tile.stamen.com/terrain/8/73/94.png
## Source : http://tile.stamen.com/terrain/8/74/94.png
## Source : http://tile.stamen.com/terrain/8/70/95.png
## Source : http://tile.stamen.com/terrain/8/71/95.png
## Source : http://tile.stamen.com/terrain/8/72/95.png
## Source : http://tile.stamen.com/terrain/8/73/95.png
## Source : http://tile.stamen.com/terrain/8/74/95.png
## Source : http://tile.stamen.com/terrain/8/70/96.png
## Source : http://tile.stamen.com/terrain/8/71/96.png
## Source : http://tile.stamen.com/terrain/8/72/96.png
## Source : http://tile.stamen.com/terrain/8/73/96.png
## Source : http://tile.stamen.com/terrain/8/74/96.png
## Source : http://tile.stamen.com/terrain/8/70/97.png
## Source : http://tile.stamen.com/terrain/8/71/97.png
## Source : http://tile.stamen.com/terrain/8/72/97.png
## Source : http://tile.stamen.com/terrain/8/73/97.png
## Source : http://tile.stamen.com/terrain/8/74/97.png
We filter the data by specific hospital type in this visualization and color code by the density of beds in each hospitals.
icuData = dat%>%
filter(icu=="Y")%>%
select (x,y,icu_beds)%>%
na.omit()
qmplot(x,y,color=icu_beds,data=icuData, main = "ICU Beds in Pennsylvania")
## Using zoom = 8...
### Map 3: Hospital beds in Pittsburgh
Filtering data by city and applying the color coding here as well.
pittsData <- dat%>%
filter(city=="Pittsburgh")%>%
select (x,y,beds_sus)%>%
na.omit()
theme_set(theme_bw(16))
pittsMap <- qmap("pittsburgh", zoom = 14, color = "bw", legend = "topleft")
## Source : https://maps.googleapis.com/maps/api/staticmap?center=pittsburgh&zoom=14&size=640x640&scale=2&maptype=terrain&language=en-EN&key=xxx-gzhab9Ty1E6mTop3dfXKdnY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=pittsburgh&key=xxx-gzhab9Ty1E6mTop3dfXKdnY
pittsMap +
geom_point(aes(x = x, y = y, size = beds_sus),
data = pittsData) +
ggtitle("No. of hospital beds in Pittsburgh")
## Warning: Removed 15 rows containing missing values (geom_point).
### Map 4: Heart Transplant in Philly
In this visualization,, the data is filtered by the city and the map type is changed.
qmap("philadelphia", zoom=11,maptype = "roadmap")+ geom_point(aes(x, y , color = heart_tran), data = dat)
## Source : https://maps.googleapis.com/maps/api/staticmap?center=philadelphia&zoom=11&size=640x640&scale=2&maptype=roadmap&language=en-EN&key=xxx-gzhab9Ty1E6mTop3dfXKdnY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=philadelphia&key=xxx-gzhab9Ty1E6mTop3dfXKdnY
## Warning: Removed 224 rows containing missing values (geom_point).
### Map 5: Pharmacies in PA
pharmData <- dat %>% filter(pharmacy == "Y")
p1 <- qmplot(x, y, data = pharmData, legend = "none", colour= I('red'), mapcolor = "color", extent = "panel", main = "Pharmacies in PA", xlab = "Longitude", ylab = "Latitude", source = 'google', maptype = 'toner',size = I(2), zoom = 7)
## maptype = "toner" is only available with source = "stamen".
## resetting to source = "stamen"...
## Source : https://maps.googleapis.com/maps/api/staticmap?center=40.942826,-77.681596&zoom=7&size=640x640&scale=2&maptype=terrain&key=xxx-gzhab9Ty1E6mTop3dfXKdnY
## Source : http://tile.stamen.com/toner/7/35/46.png
## Source : http://tile.stamen.com/toner/7/36/46.png
## Source : http://tile.stamen.com/toner/7/37/46.png
## Source : http://tile.stamen.com/toner/7/35/47.png
## Source : http://tile.stamen.com/toner/7/36/47.png
## Source : http://tile.stamen.com/toner/7/37/47.png
## Source : http://tile.stamen.com/toner/7/35/48.png
## Source : http://tile.stamen.com/toner/7/36/48.png
## Source : http://tile.stamen.com/toner/7/37/48.png
## Source : http://tile.stamen.com/toner/7/35/49.png
## Source : http://tile.stamen.com/toner/7/36/49.png
## Source : http://tile.stamen.com/toner/7/37/49.png
p1 +
stat_density2d(aes(x = x, y = y, fill=..level..), data=pharmData,geom="polygon", alpha=0.2) +
scale_fill_gradient(low = "green", high = "black")