Objectives

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.

Data Preprocessing

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.

Data Glimpse

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…

Map 1: Overview of Hospitals in Pennsylvania

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

Map 2: Hospitals with ICU Beds

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")