---
title: "MAP2"
output:
  html_notebook: default
  html_document: default
  pdf_document: default
---


---
title: "Where to Find the Best Job?"
output:
  html_document: default
  html_notebook: default
  pdf_document: default
---

       

```{r map2, echo=FALSE, message=FALSE}
library(readr)
library(dplyr)
library(maps)
library(leaflet)
library(rbokeh)
library(fmsb)

#setwd("C:/Users/Administrator/Desktop/ADS/Proj 1/Data")
load("C:/Users/Administrator/Desktop/ADS/Proj 1/Data/.RData")

#a14=read_csv("ss14pusa.csv")
#b14=read_csv("ss14pusb.csv")
#all14=rbind(a14,b14)
#rm(a14);rm(b14)
#gc();Sys.sleep(10);gc() #To make sure clean all memory in case of crash


#selct=select(all14,OCCP,ST,WAGP,AGEP,JWMNP,ESR,SCHL,SEX,WKHP,NAICSP,PWGTP,POWSP,POWPUMA)%>%
#      na.omit()%>%
#      mutate(WAGP=as.numeric(WAGP),
#             AGEP=as.numeric(AGEP),
#             WKHP=as.numeric(WKHP),
#             JWMNP=as.numeric(JWMNP),
#             PWGTP=as.numeric(PWGTP),
#             ST=as.integer(ST),
#             SCHL=as.integer(SCHL),
#             SEX=as.integer(SEX),
#             OCCP=as.integer(OCCP))%>%
#       merge(occupa,by="OCCP")
      

group_ST=group_by(selct,ST)
sumrz_ST=summarise(group_ST,
                   Meanwage=weighted.mean(WAGP,w=PWGTP),
                   MeanAGEP=weighted.mean(AGEP,w=PWGTP),
                   MeanWKHP=weighted.mean(WKHP,w=PWGTP),
                   MeanJWMNP=weighted.mean(JWMNP,w=PWGTP)
                    )%>%
          mutate(ST.map=match((ST_name$abbr[-52]),state.fips$abb,nomatch=99))%>%
          mutate(abb=state.fips$abb[ST.map])%>%
          arrange(ST.map)
map.data=merge(state.fips,sumrz_ST,by="abb",all=T)%>%
         arrange(ST.map)
pal2 <- colorNumeric(
  palette = "Blues",
  domain = map.data$MeanWKHP
)


mapStates = map("state", fill = TRUE, plot = FALSE)
leaflet(data = mapStates) %>% addTiles() %>%
  addPolygons(fillColor =pal2(map.data$MeanWKHP), fillOpacity=0.5,stroke = FALSE)
```

####Figure 2.Map for Average Working Hour

This Graph shows the average working hours by different state. The states which shows longer averagely working hours are most likely depends on agriculture industry. Surprisingly, New York people is not the most hard working people among the country.
