library(ggmap)
## Warning: package 'ggmap' was built under R version 3.6.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 3.6.3
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(ggplot2)
library(raster)
## Warning: package 'raster' was built under R version 3.6.3
## Loading required package: sp
library(rgeos)
## Warning: package 'rgeos' was built under R version 3.6.3
## rgeos version: 0.5-2, (SVN revision 621)
##  GEOS runtime version: 3.6.1-CAPI-1.10.1 
##  Linking to sp version: 1.4-1 
##  Polygon checking: TRUE
library(maptools)
## Warning: package 'maptools' was built under R version 3.6.3
## Checking rgeos availability: TRUE
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.6.1
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:rgeos':
## 
##     intersect, setdiff, union
## The following objects are masked from 'package:raster':
## 
##     intersect, select, union
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 3.6.2
library(stringr)

getwd()
## [1] "C:/Users/taetaetae/Documents/R/NEW_Kaggle/8th_movpop/movpop"
raw <- read.csv("data13_.csv")
#최종목표!! 서울지도에서 시간대별로 유동인구수가 변하는 영상을 만들고 싶다. 인구수 그라데이션으로 표현하기!
#누가벌써 했네? https://story.pxd.co.kr/1408

#근데 변수명들이 마음에 안든다. 
  names(raw) <- c("spot", 
                  "gu", 
                  "dong",
                  "x_point", 
                  "y_point", 
                  "day", 
                  "time", 
                  "movpop", 
                  "year")


#하나씩 하자! 잠깐, dplyr로 수요일 오전 11시에 가장 유동인구수가 많은 구를 알아보자
  raw %>% 
    filter(time == "11시-12시") %>%
    group_by(gu) %>%
    summarise(movpopsum = sum(movpop)) %>%
    arrange(desc(movpopsum)) -> wed_11
    #그림도 그려보자. 
    
  options(scipen = 100) #이거안하면 그래프에서 지수표기법으로 나옴 안예쁨
  
  wed_11 %>% 
    ggplot(aes(x = gu, y = movpopsum)) + 
    geom_histogram(stat = "identity", fill = "lightblue") +
    labs(title = "wed_11am", x = "gu", y = "movpopsum") +
    theme_economist() +
    coord_flip()
## Warning: Ignoring unknown parameters: binwidth, bins, pad
## Warning: Removed 1 rows containing missing values (position_stack).

#아, 이거 시간데이터도 있으니까 line 써서도 그려보자, time이 factor네, 하긴 어차피 시간대니까 그냥 
# 그럼 구별로, 시간대에 따라 유동인구가 변화하는걸 line으로 그려보자
  
  #(str_extract_all(raw$time, "\\d{2}")) 숫자만 뽑기
  raw$start <- as.numeric(substr(raw$time, 1, 2)) #숫자만 뽑기 2
  #raw$end <- as.character.POSIXt(substr(raw$time, 5, 6)) 
  #어차피 1시간씩인데, 그냥 할걸 그랬나

  raw %>% group_by(gu, start) %>% summarise(summov = sum(movpop)) -> raw_gu_time
  raw_gu_time$gu <- as.factor(raw_gu_time$gu)
  
  raw_gu_time %>% ggplot(aes(x = start, y = summov, group = gu, color = gu)) +
    geom_line()

  #position 도 ggplot에서 다뤄야하는데,,,? dodge같은.
  #scale(limit, breaks, expand, labels), labs
  admin <- readxl::read_xls("adm_code.xls")
  #종로구가 11010이다. 행정동. 이제 raw에 이름을 붙여주자
  View(admin)
  admin_gu <- admin[,-c(1:2)] #필요없는 부분은 빼고
  raw$gu <- as.character(raw$gu)
  raw$dong <- as.character(raw$dong)
  
  raw_gu <- inner_join(raw, admin_gu, by =  c("dong" = "읍면동코드"))
  #코드 기준으로, 동이름 합쳤다
  
  admin_gu %>% filter(읍면동명칭 == "부암동") #1101055 부암동이란다
## # A tibble: 1 x 4
##   시군구코드 시군구명칭 읍면동코드 읍면동명칭
##   <chr>      <chr>      <chr>      <chr>     
## 1 11010      종로구     1101055    부암동
  View(admin_gu %>% head)
  
  #지금 필요한 것 만 뽑자
  seoul_mov <- dplyr::select(raw_gu, spot, gu, dong, day, movpop, start, 시군구명칭, 읍면동명칭)
  names(seoul_mov) <- c("spot", 
                    "gu", 
                    "dong",
                    "day", 
                    "movpop", 
                    "start",
                    "guname",
                    "dongname")
#seoul_mov는 이제 동이름이 있습니다. 이제 할 일은 동이름을 기준으로 기존의 또 다시 법정동 코드 파일이랑 합쳐서,
#유동인구 + 동이름 + 법정동 코드가 있어야겠죠. 뒤에 나올 shape파일들은 죄다 법정동 기준이라서 그 때 합치려면!

  head(seoul_mov) #신흥모피는 종로구 부암동에 있구나!?
##                      spot    gu    dong day movpop start guname dongname
## 1 신흥모피명품전문크리닝. 11010 1101055  토     51     7 종로구   부암동
## 2 신흥모피명품전문크리닝. 11010 1101055  월     27    13 종로구   부암동
## 3 신흥모피명품전문크리닝. 11010 1101055  월     30    16 종로구   부암동
## 4 신흥모피명품전문크리닝. 11010 1101055  금     21     7 종로구   부암동
## 5 신흥모피명품전문크리닝. 11010 1101055  화     63     8 종로구   부암동
## 6 신흥모피명품전문크리닝. 11010 1101055  금     36    11 종로구   부암동
  #법정동 코드는 11자리 1101055 -> 부암동. 7자리 숫자
  #행정동 코드는 10자리         11110 550 00 부암동 뒤에 8자리 1111055000까지만 잘라도 되지 않을까.
  #청운효자동은         11 서울 11110 종로구 51500 청윤효자동
  #청운효자동(淸雲孝子洞)은 서울특별시 종로구의 행정동이다. 청운동과 효자동의 이름을 따서 
  #2008년 11월 1일 청운효자동으로 되었으며, 법정동은 세종로, 청운동, 효자동, 신교동, 궁정동, 옥인동, 통인동, 
  #창성동, 누상동, 누하동이다.
  #https://m.blog.naver.com/PostView.nhn?blogId=s9soft&logNo=221575427247&proxyReferer=https:%2F%2Fwww.google.com%2F
  

  seoul_bub <- readxl::read_xlsx("bubjung_20190701.xlsx")
  seoul_bub <- seoul_bub %>% filter(시도명 == "서울특별시")
  seoul_mov_bub <- inner_join(seoul_mov, seoul_bub, by = c("dongname" = "읍면동명"))
  seoul_mov_bub_2 <- seoul_mov_bub %>% select(spot, day, movpop, start, guname, dongname, 법정동코드)
  seoul_mov_bub_2$법정동코드 <- as.character(substr(seoul_mov_bub_2$법정동코드, 1, 8))
#shape파일을 가져오는 방법이 여러가지가 있는데, 난 shapefile로 하련다. 다른 것들은 하다가 에러난것도 있고,,,

  korea_emd <- shapefile("TL_SCCO_EMD.shp")
  fort_korea_emd <- fortify(korea_emd, region = "EMD_CD") 
    #region을 정해주면, 아래와 같은 에러가 날 수 있음, 그렇다면 https://coding-law.tistory.com/30 를 참고하자.
#자, 이제 동코드와 유동인구를 가진 seoul_mov_bub_2와 fortify된 읍면동 지도를 merge해보자.

  seoul_mov_map <- inner_join(seoul_mov_bub_2, fort_korea_emd, by = c("법정동코드" = "id"))

#토요일에 유동인구 50인 동네를 그려라. 
  seoul_mov_map %>% filter(movpop > 50 & day == "토") %>% 
      ggplot(aes(x=long, y=lat, group=group)) + geom_polygon(fill='white', color='black') + coord_fixed()

#