002. 통계청 사랑해 근데 난 기상청을..... + 데이터 결측치 보정
에 들어가보자.
음! 볼까?
PM 10은 미세먼지이고 PM2.5는 초미세먼지 월별+도시별 대기오염도구나,
그럼 초미세먼지를 한 번 보자.
월별로 제공한다. 따라서 가공된 데이터다
조금 더 RAW한 데이터가 필요하다.
그래서 RAW한 데이터를 제공하는 KMA로 가자.
기상자료개방포털
data.kma.go.kr
데이터 종류가 제공되고, 시기와 형태를 지정하여 조회할 수 있다.
2019년 데이터는 부족하므로, 연도를 대표 하기 어렵다.
따라서 2015년 부터 2018년 조금, 4년의 데이터를 분석해보기 위해 다운받는다.
수가 헷갈리니깐 디렉토리로 구분해놓고,
궁금하니깐 까보자.
정말 1시간마다 측정되어 있다.
그런데.......... 좀 내리다 보니 결측치가 있다.
COUNTBLANK 함수로 얼마나 되는지 확인해 보자.
그리고
처음 인덱스(C2)부터 마지막 인덱스(C8616)을 설정해주면
바로 계산해주는데,
175개나 된다고?
큰일 났네
이러면 의미없는 통계가 되잖아
후........
그럼 평균값으로 보정해 줘야겠군,
setwd("C:/Users/"사용자 이름"/Desktop/BigData/108 SE") //디렉토리 지정<-서울
dat<-read.csv(file="2015.csv",nrows=9000) //대부분 8000줄이 넘으니 9000줄 쯤 받기
names(dat)<-c("region","time","ppm") //각 항목에 이름지정
dat$ppm <- ifelse(is.na(dat$ppm), mean(dat$ppm, na.rm=T), dat$ppm) //결측치를 평균값으로 집어넣기
//na.rm=T 옵션으로 na는 세지 않고 평균을 구했다.
후! 됐구만,
이제 벡터를 하나 새로 만들어서 넣기만 하면.....
for(i in 1:nrow(dat)){
sum=sum+dat[i,3]
if(i%%24==0){
v[length(v)+1]<-sum/24
sum=0
}
}
됐다!
길이를 확인해 보자
365일이 나오지 않는다.
그렇다.
이론상 8760줄(365*24)이 나와야 하는데, 그렇지 못한 것이다. (2016년은 윤년이므로 8784줄)
어쩌다가 날짜를 찾아버렸다.
12시간이 누락되었다. (아마 계측기에서 예상치 못한 경우가 생긴 부분일거다.)
이런 부분이 좀 반복되어 1년에 7일이나 누락된 것이다.
분명 일별로 구분되지 않았을 것이다.
그럼 365일 1년으로 그래프를 그리려 했던 취지와 맞지 않는다.
예상치 못한 결과가 나왔다.
조금 더 강력한 일별 검증과정이 필요해졌다.
---REMINDER---
1. 24시간이 정확히 지켜지지 않는 데이터를 일별로 나누는 검증 과정
2. 결측치는 최빈값이 아닌 전체의 평균값으로 채웠다.
3. 아마 날짜 부분을 슬라이싱해서 검증해야 하지 않을까?