library(dplyr)
##
## 다음의 패키지를 부착합니다: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readxl)
## Warning: 패키지 'readxl'는 R 버전 4.2.2에서 작성되었습니다
airseoul <- read_excel("period1.xlsx")
str(airseoul)
## tibble [1,535 × 8] (S3: tbl_df/tbl/data.frame)
## $ 날짜 : chr [1:1535] "전체" "2022-03-31" "2022-03-31" "2022-03-31" ...
## $ 측정소명 : chr [1:1535] "평균" "평균" "강남구" "강동구" ...
## $ 미세먼지 PM10
## (㎍/m3) : num [1:1535] 41 20 21 26 NA 23 19 21 23 17 ...
## $ 초미세먼지
## PM2.5 (㎍/m3): num [1:1535] 23 11 10 13 17 9 9 10 10 9 ...
## $ 오존
## O3 (ppm) : chr [1:1535] "0.026" "0.032" "0.033" "0.026" ...
## $ 이산화질소
## NO2 (ppm) : chr [1:1535] "0.026" "0.014" "0.015" "0.014" ...
## $ 일산화탄소
## CO (ppm) : chr [1:1535] "0.5" "0.3" "0.3" "0.3" ...
## $ 아황산가스
## SO2(ppm) : num [1:1535] 0.003 0.002 0.003 0.002 0.003 0.003 0.002 0.003 0.003 0.002 ...
names(airseoul)
## [1] "날짜" "측정소명"
## [3] "미세먼지 PM10\r\n(㎍/m3)" "초미세먼지\r\nPM2.5 (㎍/m3)"
## [5] "오존\r\nO3 (ppm)" "이산화질소\r\nNO2 (ppm)"
## [7] "일산화탄소\r\nCO (ppm)" "아황산가스\r\nSO2(ppm)"
airseoul1 <- airseoul %>%
rename(date = "날짜",
region = "측정소명",
pm10 = "미세먼지 PM10\r\n(㎍/m3)",
pm2.5= "초미세먼지\r\nPM2.5 (㎍/m3)") %>%
select(date, region, pm10, pm2.5)
glimpse(airseoul1)
## Rows: 1,535
## Columns: 4
## $ date <chr> "전체", "2022-03-31", "2022-03-31", "2022-03-31", "2022-03-31",…
## $ region <chr> "평균", "평균", "강남구", "강동구", "강북구", "강서구", "관악구…
## $ pm10 <dbl> 41, 20, 21, 26, NA, 23, 19, 21, 23, 17, 20, 16, 23, 21, 19, 17,…
## $ pm2.5 <dbl> 23, 11, 10, 13, 17, 9, 9, 10, 10, 9, 11, 11, 10, 11, 8, 7, 17, …
table(airseoul1$date)
##
## 2022-02-01 2022-02-02 2022-02-03 2022-02-04 2022-02-05 2022-02-06 2022-02-07
## 26 26 26 26 26 26 26
## 2022-02-08 2022-02-09 2022-02-10 2022-02-11 2022-02-12 2022-02-13 2022-02-14
## 26 26 26 26 26 26 26
## 2022-02-15 2022-02-16 2022-02-17 2022-02-18 2022-02-19 2022-02-20 2022-02-21
## 26 26 26 26 26 26 26
## 2022-02-22 2022-02-23 2022-02-24 2022-02-25 2022-02-26 2022-02-27 2022-02-28
## 26 26 26 26 26 26 26
## 2022-03-01 2022-03-02 2022-03-03 2022-03-04 2022-03-05 2022-03-06 2022-03-07
## 26 26 26 26 26 26 26
## 2022-03-08 2022-03-09 2022-03-10 2022-03-11 2022-03-12 2022-03-13 2022-03-14
## 26 26 26 26 26 26 26
## 2022-03-15 2022-03-16 2022-03-17 2022-03-18 2022-03-19 2022-03-20 2022-03-21
## 26 26 26 26 26 26 26
## 2022-03-22 2022-03-23 2022-03-24 2022-03-25 2022-03-26 2022-03-27 2022-03-28
## 26 26 26 26 26 26 26
## 2022-03-29 2022-03-30 2022-03-31 전체
## 26 26 26 1
table(airseoul1$region)
##
## 강남구 강동구 강북구 강서구 관악구 광진구 구로구 금천구
## 59 59 59 59 59 59 59 59
## 노원구 도봉구 동대문구 동작구 마포구 서대문구 서초구 성동구
## 59 59 59 59 59 59 59 59
## 성북구 송파구 양천구 영등포구 용산구 은평구 종로구 중구
## 59 59 59 59 59 59 59 59
## 중랑구 평균
## 59 60
View(airseoul1)
airseoul1 <- airseoul1 %>% filter(date != "전체"®ion != "평균")
table(airseoul1$date)
##
## 2022-02-01 2022-02-02 2022-02-03 2022-02-04 2022-02-05 2022-02-06 2022-02-07
## 25 25 25 25 25 25 25
## 2022-02-08 2022-02-09 2022-02-10 2022-02-11 2022-02-12 2022-02-13 2022-02-14
## 25 25 25 25 25 25 25
## 2022-02-15 2022-02-16 2022-02-17 2022-02-18 2022-02-19 2022-02-20 2022-02-21
## 25 25 25 25 25 25 25
## 2022-02-22 2022-02-23 2022-02-24 2022-02-25 2022-02-26 2022-02-27 2022-02-28
## 25 25 25 25 25 25 25
## 2022-03-01 2022-03-02 2022-03-03 2022-03-04 2022-03-05 2022-03-06 2022-03-07
## 25 25 25 25 25 25 25
## 2022-03-08 2022-03-09 2022-03-10 2022-03-11 2022-03-12 2022-03-13 2022-03-14
## 25 25 25 25 25 25 25
## 2022-03-15 2022-03-16 2022-03-17 2022-03-18 2022-03-19 2022-03-20 2022-03-21
## 25 25 25 25 25 25 25
## 2022-03-22 2022-03-23 2022-03-24 2022-03-25 2022-03-26 2022-03-27 2022-03-28
## 25 25 25 25 25 25 25
## 2022-03-29 2022-03-30 2022-03-31
## 25 25 25
table(airseoul1$region)
##
## 강남구 강동구 강북구 강서구 관악구 광진구 구로구 금천구
## 59 59 59 59 59 59 59 59
## 노원구 도봉구 동대문구 동작구 마포구 서대문구 서초구 성동구
## 59 59 59 59 59 59 59 59
## 성북구 송파구 양천구 영등포구 용산구 은평구 종로구 중구
## 59 59 59 59 59 59 59 59
## 중랑구
## 59
summary(airseoul1$pm10)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 3.00 27.00 36.00 40.54 50.00 112.00 7
summary(airseoul1$pm2.5)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.00 13.00 19.00 23.28 32.00 92.00 3
airseoul1 <- airseoul1 %>% filter(!is.na(pm10)&!is.na(pm2.5))
summary(airseoul1$pm10)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.00 27.00 36.00 40.54 50.00 112.00
summary(airseoul1$pm2.5)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 13.00 19.00 23.26 32.00 92.00
airseoul1 %>% filter(pm10==max(pm10)) %>% select(date, region, pm10)
## # A tibble: 1 × 3
## date region pm10
## <chr> <chr> <dbl>
## 1 2022-03-05 구로구 112
airseoul1 %>% filter(pm10==min(pm10)) %>% select(date, region, pm10)
## # A tibble: 3 × 3
## date region pm10
## <chr> <chr> <dbl>
## 1 2022-03-19 은평구 3
## 2 2022-03-18 도봉구 3
## 3 2022-03-18 은평구 3
airseoul1 %>% filter(pm2.5==max(pm2.5)) %>% select(date, region, pm2.5)
## # A tibble: 1 × 3
## date region pm2.5
## <chr> <chr> <dbl>
## 1 2022-02-12 서대문구 92
airseoul1 %>% filter(pm2.5==min(pm2.5)) %>% select(date, region, pm2.5)
## # A tibble: 6 × 3
## date region pm2.5
## <chr> <chr> <dbl>
## 1 2022-03-19 구로구 1
## 2 2022-03-19 종로구 1
## 3 2022-03-18 구로구 1
## 4 2022-03-18 서대문구 1
## 5 2022-03-18 서초구 1
## 6 2022-03-18 성동구 1
airseoul1 %>% group_by(region) %>% summarise(m=mean(pm10)) %>% arrange(desc(m)) %>% head(5)
## # A tibble: 5 × 2
## region m
## <chr> <dbl>
## 1 양천구 44.4
## 2 강북구 44.2
## 3 강서구 43.8
## 4 노원구 43.7
## 5 강동구 43.6
airseoul1 %>% group_by(date) %>% summarise(m=mean(pm10)) %>% arrange(desc(m)) %>% head(5)
## # A tibble: 5 × 2
## date m
## <chr> <dbl>
## 1 2022-03-05 92.3
## 2 2022-02-12 87
## 3 2022-02-11 81.8
## 4 2022-03-04 81
## 5 2022-03-10 70.2
airseoul1 %>% mutate(pm_grade=ifelse(pm10<=30, "good",
ifelse(pm10<=81, "normal",
ifelse(pm10<=150, "bad", "worse")))) %>%
group_by(pm_grade) %>%
summarise(n=n()) %>%
mutate(total=sum(n), pct=n/total*100)
## # A tibble: 3 × 4
## pm_grade n total pct
## <chr> <int> <int> <dbl>
## 1 bad 71 1467 4.84
## 2 good 538 1467 36.7
## 3 normal 858 1467 58.5
airseoul1 %>% filter(pm2.5==min(pm2.5)) %>% arrange(desc(pm10))
## # A tibble: 6 × 4
## date region pm10 pm2.5
## <chr> <chr> <dbl> <dbl>
## 1 2022-03-18 성동구 7 1
## 2 2022-03-18 구로구 6 1
## 3 2022-03-18 서초구 6 1
## 4 2022-03-19 구로구 5 1
## 5 2022-03-18 서대문구 5 1
## 6 2022-03-19 종로구 4 1
airseoul10 <- read.csv("period10.csv", fileEncoding = "euc-kr")
glimpse(airseoul10)
## Rows: 18,000
## Columns: 10
## $ 날짜 <chr> "2022-06-01 01", "2022-06-01 02", "2022-06-01 03", "2022-06…
## $ 시도 <chr> "서울 중구", "서울 중구", "서울 중구", "서울 중구", "서울 …
## $ 측정소명 <chr> "중구", "중구", "중구", "중구", "중구", "중구", "중구", "중…
## $ 측정소코드 <int> 111121, 111121, 111121, 111121, 111121, 111121, 111121, 111…
## $ 아황산가스 <dbl> 0.004, 0.004, 0.004, 0.004, 0.004, 0.004, 0.004, 0.004, 0.0…
## $ 일산화탄소 <dbl> 0.4, 0.4, 0.5, 0.4, 0.4, 0.4, 0.4, 0.5, 0.4, 0.3, 0.3, 0.4,…
## $ 오존 <dbl> 0.022, 0.028, 0.022, 0.023, 0.037, 0.017, 0.014, 0.026, 0.0…
## $ 이산화질소 <dbl> 0.039, 0.030, 0.032, 0.029, 0.017, 0.034, 0.037, 0.034, 0.0…
## $ PM10 <int> 19, 23, 20, 20, 19, 19, 21, 45, 31, 21, 17, 21, 19, 17, 13,…
## $ PM2.5 <int> 7, 10, 12, 10, 9, 8, 7, 9, 9, 9, 8, 10, 8, 9, 5, 9, 11, 9, …
View(airseoul10)
table(airseoul10$시도)
##
## 서울 강남구 서울 강동구 서울 강북구 서울 강서로 서울 관악구
## 720 720 720 720 720
## 서울 광진구 서울 구로구 서울 금천구 서울 노원구 서울 도봉구
## 720 720 720 720 720
## 서울 동대문구 서울 동작구 서울 마포구 서울 서대문구 서울 서초구
## 720 720 720 720 720
## 서울 성동구 서울 성북구 서울 송파구 서울 양천구 서울 영등포구
## 720 720 720 720 720
## 서울 용산구 서울 은평구 서울 종로구 서울 중구 서울 중랑구
## 720 720 720 720 720
names(airseoul10)
## [1] "날짜" "시도" "측정소명" "측정소코드" "아황산가스"
## [6] "일산화탄소" "오존" "이산화질소" "PM10" "PM2.5"
airseoul101 <- airseoul10 %>%
rename(date = "날짜",
region = "측정소명",
pm10 = "PM10",
pm2.5= "PM2.5") %>%
select(date, region, pm10, pm2.5)
glimpse(airseoul101)
## Rows: 18,000
## Columns: 4
## $ date <chr> "2022-06-01 01", "2022-06-01 02", "2022-06-01 03", "2022-06-01 …
## $ region <chr> "중구", "중구", "중구", "중구", "중구", "중구", "중구", "중구",…
## $ pm10 <int> 19, 23, 20, 20, 19, 19, 21, 45, 31, 21, 17, 21, 19, 17, 13, 13,…
## $ pm2.5 <int> 7, 10, 12, 10, 9, 8, 7, 9, 9, 9, 8, 10, 8, 9, 5, 9, 11, 9, 7, 1…
table(airseoul101$date)
##
## 2022-06-01 01 2022-06-01 02 2022-06-01 03 2022-06-01 04 2022-06-01 05
## 25 25 25 25 25
## 2022-06-01 06 2022-06-01 07 2022-06-01 08 2022-06-01 09 2022-06-01 10
## 25 25 25 25 25
## 2022-06-01 11 2022-06-01 12 2022-06-01 13 2022-06-01 14 2022-06-01 15
## 25 25 25 25 25
## 2022-06-01 16 2022-06-01 17 2022-06-01 18 2022-06-01 19 2022-06-01 20
## 25 25 25 25 25
## 2022-06-01 21 2022-06-01 22 2022-06-01 23 2022-06-01 24 2022-06-02 01
## 25 25 25 25 25
## 2022-06-02 02 2022-06-02 03 2022-06-02 04 2022-06-02 05 2022-06-02 06
## 25 25 25 25 25
## 2022-06-02 07 2022-06-02 08 2022-06-02 09 2022-06-02 10 2022-06-02 11
## 25 25 25 25 25
## 2022-06-02 12 2022-06-02 13 2022-06-02 14 2022-06-02 15 2022-06-02 16
## 25 25 25 25 25
## 2022-06-02 17 2022-06-02 18 2022-06-02 19 2022-06-02 20 2022-06-02 21
## 25 25 25 25 25
## 2022-06-02 22 2022-06-02 23 2022-06-02 24 2022-06-03 01 2022-06-03 02
## 25 25 25 25 25
## 2022-06-03 03 2022-06-03 04 2022-06-03 05 2022-06-03 06 2022-06-03 07
## 25 25 25 25 25
## 2022-06-03 08 2022-06-03 09 2022-06-03 10 2022-06-03 11 2022-06-03 12
## 25 25 25 25 25
## 2022-06-03 13 2022-06-03 14 2022-06-03 15 2022-06-03 16 2022-06-03 17
## 25 25 25 25 25
## 2022-06-03 18 2022-06-03 19 2022-06-03 20 2022-06-03 21 2022-06-03 22
## 25 25 25 25 25
## 2022-06-03 23 2022-06-03 24 2022-06-04 01 2022-06-04 02 2022-06-04 03
## 25 25 25 25 25
## 2022-06-04 04 2022-06-04 05 2022-06-04 06 2022-06-04 07 2022-06-04 08
## 25 25 25 25 25
## 2022-06-04 09 2022-06-04 10 2022-06-04 11 2022-06-04 12 2022-06-04 13
## 25 25 25 25 25
## 2022-06-04 14 2022-06-04 15 2022-06-04 16 2022-06-04 17 2022-06-04 18
## 25 25 25 25 25
## 2022-06-04 19 2022-06-04 20 2022-06-04 21 2022-06-04 22 2022-06-04 23
## 25 25 25 25 25
## 2022-06-04 24 2022-06-05 01 2022-06-05 02 2022-06-05 03 2022-06-05 04
## 25 25 25 25 25
## 2022-06-05 05 2022-06-05 06 2022-06-05 07 2022-06-05 08 2022-06-05 09
## 25 25 25 25 25
## 2022-06-05 10 2022-06-05 11 2022-06-05 12 2022-06-05 13 2022-06-05 14
## 25 25 25 25 25
## 2022-06-05 15 2022-06-05 16 2022-06-05 17 2022-06-05 18 2022-06-05 19
## 25 25 25 25 25
## 2022-06-05 20 2022-06-05 21 2022-06-05 22 2022-06-05 23 2022-06-05 24
## 25 25 25 25 25
## 2022-06-06 01 2022-06-06 02 2022-06-06 03 2022-06-06 04 2022-06-06 05
## 25 25 25 25 25
## 2022-06-06 06 2022-06-06 07 2022-06-06 08 2022-06-06 09 2022-06-06 10
## 25 25 25 25 25
## 2022-06-06 11 2022-06-06 12 2022-06-06 13 2022-06-06 14 2022-06-06 15
## 25 25 25 25 25
## 2022-06-06 16 2022-06-06 17 2022-06-06 18 2022-06-06 19 2022-06-06 20
## 25 25 25 25 25
## 2022-06-06 21 2022-06-06 22 2022-06-06 23 2022-06-06 24 2022-06-07 01
## 25 25 25 25 25
## 2022-06-07 02 2022-06-07 03 2022-06-07 04 2022-06-07 05 2022-06-07 06
## 25 25 25 25 25
## 2022-06-07 07 2022-06-07 08 2022-06-07 09 2022-06-07 10 2022-06-07 11
## 25 25 25 25 25
## 2022-06-07 12 2022-06-07 13 2022-06-07 14 2022-06-07 15 2022-06-07 16
## 25 25 25 25 25
## 2022-06-07 17 2022-06-07 18 2022-06-07 19 2022-06-07 20 2022-06-07 21
## 25 25 25 25 25
## 2022-06-07 22 2022-06-07 23 2022-06-07 24 2022-06-08 01 2022-06-08 02
## 25 25 25 25 25
## 2022-06-08 03 2022-06-08 04 2022-06-08 05 2022-06-08 06 2022-06-08 07
## 25 25 25 25 25
## 2022-06-08 08 2022-06-08 09 2022-06-08 10 2022-06-08 11 2022-06-08 12
## 25 25 25 25 25
## 2022-06-08 13 2022-06-08 14 2022-06-08 15 2022-06-08 16 2022-06-08 17
## 25 25 25 25 25
## 2022-06-08 18 2022-06-08 19 2022-06-08 20 2022-06-08 21 2022-06-08 22
## 25 25 25 25 25
## 2022-06-08 23 2022-06-08 24 2022-06-09 01 2022-06-09 02 2022-06-09 03
## 25 25 25 25 25
## 2022-06-09 04 2022-06-09 05 2022-06-09 06 2022-06-09 07 2022-06-09 08
## 25 25 25 25 25
## 2022-06-09 09 2022-06-09 10 2022-06-09 11 2022-06-09 12 2022-06-09 13
## 25 25 25 25 25
## 2022-06-09 14 2022-06-09 15 2022-06-09 16 2022-06-09 17 2022-06-09 18
## 25 25 25 25 25
## 2022-06-09 19 2022-06-09 20 2022-06-09 21 2022-06-09 22 2022-06-09 23
## 25 25 25 25 25
## 2022-06-09 24 2022-06-10 01 2022-06-10 02 2022-06-10 03 2022-06-10 04
## 25 25 25 25 25
## 2022-06-10 05 2022-06-10 06 2022-06-10 07 2022-06-10 08 2022-06-10 09
## 25 25 25 25 25
## 2022-06-10 10 2022-06-10 11 2022-06-10 12 2022-06-10 13 2022-06-10 14
## 25 25 25 25 25
## 2022-06-10 15 2022-06-10 16 2022-06-10 17 2022-06-10 18 2022-06-10 19
## 25 25 25 25 25
## 2022-06-10 20 2022-06-10 21 2022-06-10 22 2022-06-10 23 2022-06-10 24
## 25 25 25 25 25
## 2022-06-11 01 2022-06-11 02 2022-06-11 03 2022-06-11 04 2022-06-11 05
## 25 25 25 25 25
## 2022-06-11 06 2022-06-11 07 2022-06-11 08 2022-06-11 09 2022-06-11 10
## 25 25 25 25 25
## 2022-06-11 11 2022-06-11 12 2022-06-11 13 2022-06-11 14 2022-06-11 15
## 25 25 25 25 25
## 2022-06-11 16 2022-06-11 17 2022-06-11 18 2022-06-11 19 2022-06-11 20
## 25 25 25 25 25
## 2022-06-11 21 2022-06-11 22 2022-06-11 23 2022-06-11 24 2022-06-12 01
## 25 25 25 25 25
## 2022-06-12 02 2022-06-12 03 2022-06-12 04 2022-06-12 05 2022-06-12 06
## 25 25 25 25 25
## 2022-06-12 07 2022-06-12 08 2022-06-12 09 2022-06-12 10 2022-06-12 11
## 25 25 25 25 25
## 2022-06-12 12 2022-06-12 13 2022-06-12 14 2022-06-12 15 2022-06-12 16
## 25 25 25 25 25
## 2022-06-12 17 2022-06-12 18 2022-06-12 19 2022-06-12 20 2022-06-12 21
## 25 25 25 25 25
## 2022-06-12 22 2022-06-12 23 2022-06-12 24 2022-06-13 01 2022-06-13 02
## 25 25 25 25 25
## 2022-06-13 03 2022-06-13 04 2022-06-13 05 2022-06-13 06 2022-06-13 07
## 25 25 25 25 25
## 2022-06-13 08 2022-06-13 09 2022-06-13 10 2022-06-13 11 2022-06-13 12
## 25 25 25 25 25
## 2022-06-13 13 2022-06-13 14 2022-06-13 15 2022-06-13 16 2022-06-13 17
## 25 25 25 25 25
## 2022-06-13 18 2022-06-13 19 2022-06-13 20 2022-06-13 21 2022-06-13 22
## 25 25 25 25 25
## 2022-06-13 23 2022-06-13 24 2022-06-14 01 2022-06-14 02 2022-06-14 03
## 25 25 25 25 25
## 2022-06-14 04 2022-06-14 05 2022-06-14 06 2022-06-14 07 2022-06-14 08
## 25 25 25 25 25
## 2022-06-14 09 2022-06-14 10 2022-06-14 11 2022-06-14 12 2022-06-14 13
## 25 25 25 25 25
## 2022-06-14 14 2022-06-14 15 2022-06-14 16 2022-06-14 17 2022-06-14 18
## 25 25 25 25 25
## 2022-06-14 19 2022-06-14 20 2022-06-14 21 2022-06-14 22 2022-06-14 23
## 25 25 25 25 25
## 2022-06-14 24 2022-06-15 01 2022-06-15 02 2022-06-15 03 2022-06-15 04
## 25 25 25 25 25
## 2022-06-15 05 2022-06-15 06 2022-06-15 07 2022-06-15 08 2022-06-15 09
## 25 25 25 25 25
## 2022-06-15 10 2022-06-15 11 2022-06-15 12 2022-06-15 13 2022-06-15 14
## 25 25 25 25 25
## 2022-06-15 15 2022-06-15 16 2022-06-15 17 2022-06-15 18 2022-06-15 19
## 25 25 25 25 25
## 2022-06-15 20 2022-06-15 21 2022-06-15 22 2022-06-15 23 2022-06-15 24
## 25 25 25 25 25
## 2022-06-16 01 2022-06-16 02 2022-06-16 03 2022-06-16 04 2022-06-16 05
## 25 25 25 25 25
## 2022-06-16 06 2022-06-16 07 2022-06-16 08 2022-06-16 09 2022-06-16 10
## 25 25 25 25 25
## 2022-06-16 11 2022-06-16 12 2022-06-16 13 2022-06-16 14 2022-06-16 15
## 25 25 25 25 25
## 2022-06-16 16 2022-06-16 17 2022-06-16 18 2022-06-16 19 2022-06-16 20
## 25 25 25 25 25
## 2022-06-16 21 2022-06-16 22 2022-06-16 23 2022-06-16 24 2022-06-17 01
## 25 25 25 25 25
## 2022-06-17 02 2022-06-17 03 2022-06-17 04 2022-06-17 05 2022-06-17 06
## 25 25 25 25 25
## 2022-06-17 07 2022-06-17 08 2022-06-17 09 2022-06-17 10 2022-06-17 11
## 25 25 25 25 25
## 2022-06-17 12 2022-06-17 13 2022-06-17 14 2022-06-17 15 2022-06-17 16
## 25 25 25 25 25
## 2022-06-17 17 2022-06-17 18 2022-06-17 19 2022-06-17 20 2022-06-17 21
## 25 25 25 25 25
## 2022-06-17 22 2022-06-17 23 2022-06-17 24 2022-06-18 01 2022-06-18 02
## 25 25 25 25 25
## 2022-06-18 03 2022-06-18 04 2022-06-18 05 2022-06-18 06 2022-06-18 07
## 25 25 25 25 25
## 2022-06-18 08 2022-06-18 09 2022-06-18 10 2022-06-18 11 2022-06-18 12
## 25 25 25 25 25
## 2022-06-18 13 2022-06-18 14 2022-06-18 15 2022-06-18 16 2022-06-18 17
## 25 25 25 25 25
## 2022-06-18 18 2022-06-18 19 2022-06-18 20 2022-06-18 21 2022-06-18 22
## 25 25 25 25 25
## 2022-06-18 23 2022-06-18 24 2022-06-19 01 2022-06-19 02 2022-06-19 03
## 25 25 25 25 25
## 2022-06-19 04 2022-06-19 05 2022-06-19 06 2022-06-19 07 2022-06-19 08
## 25 25 25 25 25
## 2022-06-19 09 2022-06-19 10 2022-06-19 11 2022-06-19 12 2022-06-19 13
## 25 25 25 25 25
## 2022-06-19 14 2022-06-19 15 2022-06-19 16 2022-06-19 17 2022-06-19 18
## 25 25 25 25 25
## 2022-06-19 19 2022-06-19 20 2022-06-19 21 2022-06-19 22 2022-06-19 23
## 25 25 25 25 25
## 2022-06-19 24 2022-06-20 01 2022-06-20 02 2022-06-20 03 2022-06-20 04
## 25 25 25 25 25
## 2022-06-20 05 2022-06-20 06 2022-06-20 07 2022-06-20 08 2022-06-20 09
## 25 25 25 25 25
## 2022-06-20 10 2022-06-20 11 2022-06-20 12 2022-06-20 13 2022-06-20 14
## 25 25 25 25 25
## 2022-06-20 15 2022-06-20 16 2022-06-20 17 2022-06-20 18 2022-06-20 19
## 25 25 25 25 25
## 2022-06-20 20 2022-06-20 21 2022-06-20 22 2022-06-20 23 2022-06-20 24
## 25 25 25 25 25
## 2022-06-21 01 2022-06-21 02 2022-06-21 03 2022-06-21 04 2022-06-21 05
## 25 25 25 25 25
## 2022-06-21 06 2022-06-21 07 2022-06-21 08 2022-06-21 09 2022-06-21 10
## 25 25 25 25 25
## 2022-06-21 11 2022-06-21 12 2022-06-21 13 2022-06-21 14 2022-06-21 15
## 25 25 25 25 25
## 2022-06-21 16 2022-06-21 17 2022-06-21 18 2022-06-21 19 2022-06-21 20
## 25 25 25 25 25
## 2022-06-21 21 2022-06-21 22 2022-06-21 23 2022-06-21 24 2022-06-22 01
## 25 25 25 25 25
## 2022-06-22 02 2022-06-22 03 2022-06-22 04 2022-06-22 05 2022-06-22 06
## 25 25 25 25 25
## 2022-06-22 07 2022-06-22 08 2022-06-22 09 2022-06-22 10 2022-06-22 11
## 25 25 25 25 25
## 2022-06-22 12 2022-06-22 13 2022-06-22 14 2022-06-22 15 2022-06-22 16
## 25 25 25 25 25
## 2022-06-22 17 2022-06-22 18 2022-06-22 19 2022-06-22 20 2022-06-22 21
## 25 25 25 25 25
## 2022-06-22 22 2022-06-22 23 2022-06-22 24 2022-06-23 01 2022-06-23 02
## 25 25 25 25 25
## 2022-06-23 03 2022-06-23 04 2022-06-23 05 2022-06-23 06 2022-06-23 07
## 25 25 25 25 25
## 2022-06-23 08 2022-06-23 09 2022-06-23 10 2022-06-23 11 2022-06-23 12
## 25 25 25 25 25
## 2022-06-23 13 2022-06-23 14 2022-06-23 15 2022-06-23 16 2022-06-23 17
## 25 25 25 25 25
## 2022-06-23 18 2022-06-23 19 2022-06-23 20 2022-06-23 21 2022-06-23 22
## 25 25 25 25 25
## 2022-06-23 23 2022-06-23 24 2022-06-24 01 2022-06-24 02 2022-06-24 03
## 25 25 25 25 25
## 2022-06-24 04 2022-06-24 05 2022-06-24 06 2022-06-24 07 2022-06-24 08
## 25 25 25 25 25
## 2022-06-24 09 2022-06-24 10 2022-06-24 11 2022-06-24 12 2022-06-24 13
## 25 25 25 25 25
## 2022-06-24 14 2022-06-24 15 2022-06-24 16 2022-06-24 17 2022-06-24 18
## 25 25 25 25 25
## 2022-06-24 19 2022-06-24 20 2022-06-24 21 2022-06-24 22 2022-06-24 23
## 25 25 25 25 25
## 2022-06-24 24 2022-06-25 01 2022-06-25 02 2022-06-25 03 2022-06-25 04
## 25 25 25 25 25
## 2022-06-25 05 2022-06-25 06 2022-06-25 07 2022-06-25 08 2022-06-25 09
## 25 25 25 25 25
## 2022-06-25 10 2022-06-25 11 2022-06-25 12 2022-06-25 13 2022-06-25 14
## 25 25 25 25 25
## 2022-06-25 15 2022-06-25 16 2022-06-25 17 2022-06-25 18 2022-06-25 19
## 25 25 25 25 25
## 2022-06-25 20 2022-06-25 21 2022-06-25 22 2022-06-25 23 2022-06-25 24
## 25 25 25 25 25
## 2022-06-26 01 2022-06-26 02 2022-06-26 03 2022-06-26 04 2022-06-26 05
## 25 25 25 25 25
## 2022-06-26 06 2022-06-26 07 2022-06-26 08 2022-06-26 09 2022-06-26 10
## 25 25 25 25 25
## 2022-06-26 11 2022-06-26 12 2022-06-26 13 2022-06-26 14 2022-06-26 15
## 25 25 25 25 25
## 2022-06-26 16 2022-06-26 17 2022-06-26 18 2022-06-26 19 2022-06-26 20
## 25 25 25 25 25
## 2022-06-26 21 2022-06-26 22 2022-06-26 23 2022-06-26 24 2022-06-27 01
## 25 25 25 25 25
## 2022-06-27 02 2022-06-27 03 2022-06-27 04 2022-06-27 05 2022-06-27 06
## 25 25 25 25 25
## 2022-06-27 07 2022-06-27 08 2022-06-27 09 2022-06-27 10 2022-06-27 11
## 25 25 25 25 25
## 2022-06-27 12 2022-06-27 13 2022-06-27 14 2022-06-27 15 2022-06-27 16
## 25 25 25 25 25
## 2022-06-27 17 2022-06-27 18 2022-06-27 19 2022-06-27 20 2022-06-27 21
## 25 25 25 25 25
## 2022-06-27 22 2022-06-27 23 2022-06-27 24 2022-06-28 01 2022-06-28 02
## 25 25 25 25 25
## 2022-06-28 03 2022-06-28 04 2022-06-28 05 2022-06-28 06 2022-06-28 07
## 25 25 25 25 25
## 2022-06-28 08 2022-06-28 09 2022-06-28 10 2022-06-28 11 2022-06-28 12
## 25 25 25 25 25
## 2022-06-28 13 2022-06-28 14 2022-06-28 15 2022-06-28 16 2022-06-28 17
## 25 25 25 25 25
## 2022-06-28 18 2022-06-28 19 2022-06-28 20 2022-06-28 21 2022-06-28 22
## 25 25 25 25 25
## 2022-06-28 23 2022-06-28 24 2022-06-29 01 2022-06-29 02 2022-06-29 03
## 25 25 25 25 25
## 2022-06-29 04 2022-06-29 05 2022-06-29 06 2022-06-29 07 2022-06-29 08
## 25 25 25 25 25
## 2022-06-29 09 2022-06-29 10 2022-06-29 11 2022-06-29 12 2022-06-29 13
## 25 25 25 25 25
## 2022-06-29 14 2022-06-29 15 2022-06-29 16 2022-06-29 17 2022-06-29 18
## 25 25 25 25 25
## 2022-06-29 19 2022-06-29 20 2022-06-29 21 2022-06-29 22 2022-06-29 23
## 25 25 25 25 25
## 2022-06-29 24 2022-06-30 01 2022-06-30 02 2022-06-30 03 2022-06-30 04
## 25 25 25 25 25
## 2022-06-30 05 2022-06-30 06 2022-06-30 07 2022-06-30 08 2022-06-30 09
## 25 25 25 25 25
## 2022-06-30 10 2022-06-30 11 2022-06-30 12 2022-06-30 13 2022-06-30 14
## 25 25 25 25 25
## 2022-06-30 15 2022-06-30 16 2022-06-30 17 2022-06-30 18 2022-06-30 19
## 25 25 25 25 25
## 2022-06-30 20 2022-06-30 21 2022-06-30 22 2022-06-30 23 2022-06-30 24
## 25 25 25 25 25
table(airseoul101$region)
##
## 강남구 강동구 강북구 강서구 관악구 광진구 구로구 금천구
## 720 720 720 720 720 720 720 720
## 노원구 도봉구 동대문구 동작구 마포구 서대문구 서초구 성동구
## 720 720 720 720 720 720 720 720
## 성북구 송파구 양천구 영등포구 용산구 은평구 종로구 중구
## 720 720 720 720 720 720 720 720
## 중랑구
## 720
summary(airseoul101$pm10)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 3.00 13.00 21.00 22.29 29.00 86.00 370
summary(airseoul101$pm2.5)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.00 6.00 11.00 12.36 17.00 59.00 275
airseoul101 <- airseoul101 %>% filter(!is.na(pm10)&!is.na(pm2.5))
summary(airseoul101$pm10)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.0 13.0 21.0 22.3 29.0 86.0
summary(airseoul101$pm2.5)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 6.00 11.00 12.34 17.00 59.00
airseoul101 %>% filter(pm10==max(pm10)) %>% select(date, region, pm10)
## date region pm10
## 1 2022-06-03 16 서대문구 86
airseoul101 %>% group_by(region) %>% summarise(m=mean(pm10)) %>% arrange(desc(m)) %>% head(5)
## # A tibble: 5 × 2
## region m
## <chr> <dbl>
## 1 동대문구 24.8
## 2 성동구 24.3
## 3 강북구 24.0
## 4 은평구 24.0
## 5 성북구 23.8
airseoul101 %>% mutate(pm_grade=ifelse(pm10<=30, "good",
ifelse(pm10<=81, "normal",
ifelse(pm10<=150, "bad", "worse")))) %>%
group_by(pm_grade) %>%
summarise(n=n()) %>%
mutate(total=sum(n), pct=n/total*100)
## # A tibble: 3 × 4
## pm_grade n total pct
## <chr> <int> <int> <dbl>
## 1 bad 4 17539 0.0228
## 2 good 13650 17539 77.8
## 3 normal 3885 17539 22.2
airseoul101 %>% filter(pm2.5==min(pm2.5)) %>% arrange(desc(pm10)) %>% head(5)
## date region pm10 pm2.5
## 1 2022-06-01 15 성북구 24 1
## 2 2022-06-13 24 강동구 24 1
## 3 2022-06-01 16 강동구 23 1
## 4 2022-06-01 16 서대문구 22 1
## 5 2022-06-14 11 강서구 22 1