Pada project ini, saya menggunakan data polusi udara di kota Seoul, Korea Selatan. Data tersebut didapatkan dari Kaggle dengan link berikut ini: Air Pollution in Seoul.
Data ini menyediakan data polusi udara harian kota Seoul dari tahun 2017 hingga 2019 pada beberapa ruas jalan. Data ini menyediakan rata-rata nilai dari 6 polutan yaitu :
Kita mulai dengan membaca dataset yaitu
Measurement_summary.csv, lalu kita simpan dalam variabel
dataframe air_pollution.
Kemudian kita melakukan pengecekan isi data.
Kita melihat dimensi dari data air_pollution.
## [1] 647511 11
Terdapat 11 kolom dan 647.511 baris (jumlah data).
Kemudian, mari kita lihat masing-masing tipe data dari tiap kolom / variabel.
## 'data.frame': 647511 obs. of 11 variables:
## $ Measurement.date: chr "2017-01-01 00:00" "2017-01-01 01:00" "2017-01-01 02:00" "2017-01-01 03:00" ...
## $ Station.code : int 101 101 101 101 101 101 101 101 101 101 ...
## $ Address : chr "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" ...
## $ Latitude : num 37.6 37.6 37.6 37.6 37.6 ...
## $ Longitude : num 127 127 127 127 127 ...
## $ SO2 : num 0.004 0.004 0.004 0.004 0.003 0.003 0.003 0.003 0.004 0.003 ...
## $ NO2 : num 0.059 0.058 0.056 0.056 0.051 0.046 0.049 0.045 0.047 0.047 ...
## $ O3 : num 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 ...
## $ CO : num 1.2 1.2 1.2 1.2 1.2 1.1 1.1 1 1.1 1.1 ...
## $ PM10 : num 73 71 70 70 69 70 66 71 72 74 ...
## $ PM2.5 : num 57 59 59 58 61 61 57 60 60 63 ...
Dari dataframe air_pollution, 11 variabel tersebut
terbagi menjadi 3 tipe data, yaitu character, integer dan numeric
(double).
Namun sebelum kita melakukan proses manipulasi tipe data, akan lebih baik jika kita melakukan pengecekan missing value pada data kita.
## Measurement.date Station.code Address Latitude
## 0 0 0 0
## Longitude SO2 NO2 O3
## 0 0 0 0
## CO PM10 PM2.5
## 0 0 0
## [1] FALSE
Tidak ditemukan data NA pada data
air_pollution.
11 kolom tersebut kita butuhkan informasi datanya, jadi tidak ada kolom yang perlu kita subset. Maka sekarang saatnya melakukan manipulasi data.
Kita lakukan proses perubahan tipe data untuk variabel
Measurement.date dan Station.code.
Mengubah tipe data character menjadi tipe data date menggunakan
library Lubridate.
Mengubah tipe data integer menjadi tipe data factor.
Kita lihat bahwa tipe data Measurement.date dan
Station.code sudah berubah.
## 'data.frame': 647511 obs. of 11 variables:
## $ Measurement.date: POSIXct, format: "2017-01-01 00:00:00" "2017-01-01 01:00:00" ...
## $ Station.code : Factor w/ 25 levels "101","102","103",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Address : chr "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" "19, Jong-ro 35ga-gil, Jongno-gu, Seoul, Republic of Korea" ...
## $ Latitude : num 37.6 37.6 37.6 37.6 37.6 ...
## $ Longitude : num 127 127 127 127 127 ...
## $ SO2 : num 0.004 0.004 0.004 0.004 0.003 0.003 0.003 0.003 0.004 0.003 ...
## $ NO2 : num 0.059 0.058 0.056 0.056 0.051 0.046 0.049 0.045 0.047 0.047 ...
## $ O3 : num 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 ...
## $ CO : num 1.2 1.2 1.2 1.2 1.2 1.1 1.1 1 1.1 1.1 ...
## $ PM10 : num 73 71 70 70 69 70 66 71 72 74 ...
## $ PM2.5 : num 57 59 59 58 61 61 57 60 60 63 ...
Membuat kolom baru Year.
## Measurement.date Station.code Address
## Min. :2017-01-01 00:00:00.00 110 : 25906 Length:647511
## 1st Qu.:2017-09-27 19:00:00.00 116 : 25906 Class :character
## Median :2018-06-24 14:00:00.00 101 : 25905 Mode :character
## Mean :2018-06-27 21:39:49.24 102 : 25905
## 3rd Qu.:2019-03-30 15:30:00.00 106 : 25905
## Max. :2019-12-31 23:00:00.00 111 : 25905
## (Other):492079
## Latitude Longitude SO2 NO2
## Min. :37.45 Min. :126.8 Min. :-1.000000 Min. :-1.00000
## 1st Qu.:37.52 1st Qu.:126.9 1st Qu.: 0.003000 1st Qu.: 0.01600
## Median :37.54 Median :127.0 Median : 0.004000 Median : 0.02500
## Mean :37.55 Mean :127.0 Mean :-0.001795 Mean : 0.02252
## 3rd Qu.:37.58 3rd Qu.:127.0 3rd Qu.: 0.005000 3rd Qu.: 0.03800
## Max. :37.66 Max. :127.1 Max. : 3.736000 Max. :38.44500
##
## O3 CO PM10 PM2.5
## Min. :-1.00000 Min. :-1.0000 Min. : -1.00 Min. : -1.00
## 1st Qu.: 0.00800 1st Qu.: 0.3000 1st Qu.: 22.00 1st Qu.: 11.00
## Median : 0.02100 Median : 0.5000 Median : 35.00 Median : 19.00
## Mean : 0.01798 Mean : 0.5092 Mean : 43.71 Mean : 25.41
## 3rd Qu.: 0.03400 3rd Qu.: 0.6000 3rd Qu.: 53.00 3rd Qu.: 31.00
## Max. :33.60000 Max. :71.7000 Max. :3586.00 Max. :6256.00
##
## year
## Min. :2017
## 1st Qu.:2017
## Median :2018
## Mean :2018
## 3rd Qu.:2019
## Max. :2019
##
Summary : 1. Data ini diambil dari tanggal 1 Januari 2017 hingga 31 Desember 2019 tiap hari. 2. Data diambil setiap 1 jam selama 24 jam dari pukul 00 s.d 23. 3. Data diambil pada 25 titik yang berbeda yang ditandai dengan 25 station code yang berbeda dari 101 s.d 125. 4. Total data ini memiliki data 647.511 baris. 5. Data polutan yang diukur adalah SO2, NO2, O3, CO, PM10 dan PM2.5.
Kemudian kita hitung nilai rata-rata dari masing-masing polutan tiap tahunnya.
Kita hitung rata-rata polutan SO2 tiap tahunnya:
Kita hitung rata-rata polutan NO2 tiap tahunnya:
Kita hitung rata-rata polutan O3 tiap tahunnya:
Kita hitung rata-rata polutan CO tiap tahunnya:
Kita hitung rata-rata polutan PM10 tiap tahunnya:
Data ini dapat kita analisis dan hitung rata-rata nilai polutan dari tiap titik station yang ada serta tiap satuan waktu yang ada selama 3 tahun data tersebut. Jadi kita bisa melakukan analisis kualitas udara di kota Seoul per harinya atau per bulan atau bahkan dalam satuan jam. Hal ini dapat membantu pemerintah dan masyarakat untuk meningkatkan kewaspadaan akan kualitas udara setiap harinya.