---
title: "MAP3"
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)
pal3 <- colorNumeric(
  palette = "Greens",
  domain = map.data$Meanwage/map.data$MeanWKHP
)


mapStates = map("state", fill = TRUE, plot = FALSE)
leaflet(data = mapStates) %>% addTiles() %>%
  addPolygons(fillColor =pal3(map.data$Meanwage/map.data$MeanWKHP), fillOpacity=0.5,stroke = FALSE)

```

####Figure 3.Map for Hour Salary

Laziness is human nature. Don't you want a job which pays tons of money and only requireds you show up at work for an hour on Friday before you head out? We calculated work life balance ratio by working hours and wage. Apparently, people who works "in the office" and have higher education generally have a sweeter life. But the problem is the data shows smaller diversities of working hours among the states, so this graph's data is mainly dominant by the wage differences.
