티스토리 뷰

원래 숙련된 조교가 있으면 

조교를 시키면 되는데

현재 숙련된 연구조교가 졸업을 하고 취업한 관계로

좀 귀찮지만 후다닥 공기질 정보를 담고 있는 마스터 파일을 만드는 코드를 후다닥(효율화하고는 거리가 멀다) 짰다. 사실 오후 내내 다운 받고 짰다. 

참고로 open API는 과거 3달치 자료만 접속이 가능해서 어차피 과거 자료를 하려면 노가다를 한 번은 해야한다.


1. airkorea 사이트를 뒤지면 연도별 확정자료가 나오는데, 그걸 다운 받는다.

- 압축파일인데, 분기별 자료가 들어가 있다.

2. 약간 귀찮은 단계가 있는데, 엑셀에서 변수명 중 한글이 있어서 이걸 영어로 수동으로 바꿔줬다.

R에서 한글 변수명이 자꾸만 에러를 내서, 그냥 수동으로 엑셀에서 바꿔졌다(나중에 생각해보니, 일단 불러들인 다음에 변수명만 영어로 바꿔줘도 될 것 같다).

 

3. 작업에 필요한 라이브러리를 불러들이자. 나는 엑셀 파일 읽어들이느라 readxl, 스트링 변수 작업하려고 stringr, 그리고 디폴트로  ggplot2와 dplyr를 불러들였다.


rm(list = ls())

library(readxl)
library(stringr)
library(ggplot2)
library(dplyr)

4. 일단 2018년 작업한 부분만 적어보자. 나중에 이걸 연도별 룹으로 다시 짰다. lapply 쓰면 편할 것 같았는데, 그냥 했다(나중에 시간 나면 수정하자).

기본적으로다가 엑셀파일 이름을 만들어서, 그걸 읽어 들이고

광역변수를 만들고, 필요한 변수인 광역, 측정소 이름(아이디로 할 수 도 있을 것 같다), 날짜, PM10과 PM2.5 변수만 포함시켰다. 그리고 나중에 쓸려고 save 하였다.


i <- 2018

for (j in 1:4) {
  

  name <- paste(i,"년 ", j, "분기.xlsx", sep = "")
  air <- read_xlsx(name, col_names = TRUE)
  
  air$gwangyuk  <- str_sub(air$region, 1,2)
  
  air0 <- air %>% 
    select(gwangyuk, station_name, date, PM10, PM25)
  
  assign(paste("air", i, j, sep = "_"), air0)
  
  temp <- paste("air", i, j, sep = "_")
  
  save(air0, file = paste(temp , ".Rda", sep = "" ))
  
}

 

그러면 아래와 같은 파일이 만들어진다. 파일 하나에 76만 개 정도의 관측치가 된다.

 

5. 이렇게 만들어진 분기별 자료를  cbind()를 이용하여 아래로 주욱 붙였다. 그리고 그걸 master0로 파일에 저장했다.


master0 <- data.frame()

for ( j in 1:4) {
  
  j <- 1
  temp <- get(paste("air", i, j, sep = "_"))
  
  master0 <- rbind(master, temp)
  
}

temp <- paste("air", i, sep = "_")
save(master0, file = paste(temp , ".Rda", sep = "" ))

 

6. 2018년 지역 분포를 보니 이렇더라.

 

7. 이 작업을 연도별로 룹을 돌리면 10년치 자료는 금방 만들어진다.

 

8. 숙련된 조교를 키우는 것이 맞나 vs. 내가 그냥 하는 것이 맞나.

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함