Belajar R – Menjadi Cerdas melalui grafik piramida dan teknik Query data

By | January 14, 2021
Print Friendly, PDF & Email
2,109 Views

R sudah banyak digunakan secara luas untuk menangani pengolahan data, nah pada postingan kali ini kita akan membahas sebuah jenis grafik yang membuat kita semakin cerdas mengolah data. Misalkan mengolah data  dari dinas kependudukan dan catatan sipil serta saham akan mudah sekali menggunakan R bahkan untuk melakukan query dan memplotkan data berbentuk grafik pyramid ataupun dual axis.

Pembahasan dibagi menjadi 2 yaitu cara mudah memplotkan grafik dengan package pyramid dan cara mengolah data mentah agar siap digunakan pada package pyramid. Grafik piramida / pyramid sering digunakan untuk visualisasi demografi /sebaran jumlah penduduk berdasarkan kategori umur atau bisa digunakan untuk menampilkan data saham berdasarkan porsi kepemilikan asing dan domestik dari sebuah jenis investor

  1. Insurance (IS) adalah perusahaan asuransi
  2. Mutual Fund (MF) adalah reksadana
  3. Pension Fund (PF) adalah dana pensiun
  4. Financial Institution (IB) adalah perusahaan keuangan / private bank
  5. Corporate (CP) adalah korporasi
  6. Securities Company (SC) adalah perusahan sekuritas
  7. Foundation (FD) adalah yayasan
  8. Individual (ID) adalah retail
  9. Lainnya (Others) OT adalah tidak tahu/tidak disebutkan

Ini adalah tools yang sangat berguna karena penulis sering lakukan untuk mencari saham yang digerakan oleh asing, seperti contoh berikut AALI dikuasai asing dengan jenis investor Mutual Fund (rekdasana) berdasarkan data KSEI per 30 Juni 2020, sedangkan domestik dikuasai oleh investor asuransi serta ritel. Tentu untuk mengolah data hampir 700 emiten nggak mungkin kalian pakai excel, terlalu ribet dan selain itu, tidak semua emiten kita pakai, hanya yang dipilih saja melalui teknik query (misalkan nilai Cap nya diatas 2 T, porsi asing diatas 30% dan seabreg aturan yang kalian ingin gunakan)

Sedangkan kenaikan kepemilikan asing atas AALI dan price per monthly yaitu

Ketika porsi asing naik dari april 2020 (34.5%) menjadi juni 2020 (35.5%) maka harga saham juta terjadi kenaikan dari Rp. 6.100 menjadi Rp. 8225 disebut dengan korelasi positif yang berarti asing beli maka harga naik.

Ok, lupakan sejenak mengenai njlimetnya saham, kita permudah saja mengolah data penduduk yang lebih simple

Install Package

Untuk membuat grafik pyramid, kita tidak perlu repot membuat code yang njlimet koq, cukup gunakan saja package pyramid. Seperti biasa untuk melakukan install package pada di R gunakan perintah install.packages()

install.packages('pyramid')

Dataset

Dataset yang kita gunakan mempunyai format *.csv yang disimpan dengan nama penduduk.csv. Bisa kalian lihat cara menyusun kolomnya yaitu

  1. Jumlah laki-laki
  2. Jumlah perempuan
  3. Range data
males,females,ages
4882,4573,0-4
5664,5286,5-9
5373,5124,10-14
5545,5255,15-19
4775,4558,20-24
5030,4090,25-29
5043,4634,30-34
6061,5685,35-39
5357,4711,40-44
4519,3925,45-49
3357,3072,50-54
2699,2694,55-59
2123,2176,60-64
1528,1616,65-69
873,929,70-74
938,1271,75+

Data diatas hanya sebagai contoh

Loading package dan Dataset

Package yang kita butuhkan selain pyramid juga dplyr untuk membaca file dalam bentuk csv. Berikut kode yang digunakan untuk plot pyramid

library(dplyr)
library(pyramid)
penduduk <- read.csv('F:/penduduk.csv')
pyramid(penduduk, Clab='Kelompok Umur', Llab='Laki-laki', Rlab='Perempuan', 
        Cgap=0.2, Cadj=0, Ldens=-1, AxisFM='d', AxisBM=".", 
        GL=FALSE, main='Piramida Penduduk')

Terlihat sekali usia produktif mendominasi yaitu pada umur 35-39 yang berarti pada umur tersebut bila pada mereka berkarir/bekerja termasuk dalam posisi matang.

Grouping Umur dan Jenis Kelamin

Tentu table diatas sangat mudah diolah tanpa perlu capek-capek membuat dalam basis kategori. Lain cerita kalau kalian punya data jutaan penduduk dari catatan sipil lengkap sama namanya. Tentu mau tidak mau harus menggunakan query pada package dplyr. Kalau kalian menggunakan SPSS dan Eview tentu akan sulit melakukan cleaning dataset. Perhatikan sebuah data kependudukan yang terdiri dari tanggal lahir dan jenis kelamin disimpan dengan nama data dukcapil.csv

Kita olah menjadi data yang lebih informatif untuk mengetahui demografi jenis kelamin dan umurnya.

Berarti ada 4 hal yang harus dilakukan

  1. Mengubah format tanggal dd/mm/yyyy agar mudah dihitung umur
  2. Mencari umur saat ini
  3. Melakukan query berdasarkan kategori umur dan jenis kelamin
  4. Agregasi data untuk menghitung count berdasarkan umur dan jenis kelamin

Berikut dataset yang belum diolah

  id_biodata  nama tanggal_lahir     kota jenis_kelamin
1          1  agus    04/06/1988 semarang     laki-laki
2          2  bejo    01/11/2000     solo     laki-laki
3          3 cucup    09/09/1988  kendari     perempuan
4          4 deden    01/07/1986  makasar     perempuan
5          5   eko    08/09/2001 surabaya     perempuan
6          6 farah    31/12/2000   kediri     perempuan
7          7 galih    06/12/1990   jepara     laki-laki
8          8  bejo    09/12/1989     pati     laki-laki

Mengubah format date indonesia menjadi sesuai Format R

Format penyajian tanggal versi indonesia berbeda dengan yang dikenal oleh format R,

  1. Format indonesia menganut urutan : dd/mm/yyyy
  2. Sedangkan format R mempunyai urutan : yyyy-mm-dd

Maka kolom tanggal_lahir akan kita ubah dengan nambah 1 kolom baru agak nampak perbedaanya (hal ini untuk pembelajaran saja, kalau datanya jutaan akan terasa berat) yaitu format_tanggal. Berikut ketika diubah format tanggal sesuai R

  id_biodata  nama tanggal_lahir     kota jenis_kelamin format_tanggal
1          1  agus    04/06/1988 semarang     laki-laki     1988-06-04
2          2  bejo    01/11/2000     solo     laki-laki     2000-11-01
3          3 cucup    09/09/1988  kendari     perempuan     1988-09-09
4          4 deden    01/07/1986  makasar     perempuan     1986-07-01
5          5   eko    08/09/2001 surabaya     perempuan     2001-09-08
6          6 farah    31/12/2000   kediri     perempuan     2000-12-31
7          7 galih    06/12/1990   jepara     laki-laki     1990-12-06
8          8  bejo    09/12/1989     pati     laki-laki     1989-12-09

 

Mencari umur saat ini

Untuk mencari umur saat ini, tak usah repot-repot yaitu gunakan saja package eeptools (kalau belum ada ya download saja dulu)

install.packages('eeptools')

Berikut hasil perhitungan umur menggunakan package eeptools

  id_biodata  nama tanggal_lahir     kota jenis_kelamin format_tanggal umur_sekarang
1          1  agus    04/06/1988 semarang     laki-laki     1988-06-04            32
2          2  bejo    01/11/2000     solo     laki-laki     2000-11-01            19
3          3 cucup    09/09/1988  kendari     perempuan     1988-09-09            31
4          4 deden    01/07/1986  makasar     perempuan     1986-07-01            34
5          5   eko    08/09/2001 surabaya     perempuan     2001-09-08            18
6          6 farah    31/12/2000   kediri     perempuan     2000-12-31            19
7          7 galih    06/12/1990   jepara     laki-laki     1990-12-06            29
8          8  bejo    09/12/1989     pati     laki-laki     1989-12-09            31

Selanjutnya yaitu melakukan query data, ini sangat menarik karena butuh cukup resource yang cukup bila kalian punya jutaan data

Query kategori

Untuk melakukan query berdasarkan kategori harus menggunakan operator ifelse (mirip sekali dengan excel). Berikut hasil mutate dengan ifelse

  id_biodata  nama tanggal_lahir     kota jenis_kelamin format_tanggal umur_sekarang kategori
1          1  agus    04/06/1988 semarang     laki-laki     1988-06-04            33      31>
2          2  bejo    01/11/2000     solo     laki-laki     2000-11-01            20    15-20
3          3 cucup    09/09/1988  kendari     perempuan     1988-09-09            32      31>
4          4 deden    01/07/1986  makasar     perempuan     1986-07-01            35      31>
5          5   eko    08/09/2001 surabaya     perempuan     2001-09-08            19    15-20
6          6 farah    31/12/2000   kediri     perempuan     2000-12-31            20    15-20
7          7 galih    06/12/1990   jepara     laki-laki     1990-12-06            30    21-30
8          8  bejo    09/12/1989     pati     laki-laki     1989-12-09            31      31>

Agregasi Data

Langkah terakhir melakukan agregasi data, ini sangat berguna untuk mempercepat operasi perhitungan data.

  kategori jenis_kelamin jumlah
  <chr>    <chr>          <int>
1 15-20    laki-laki          1
2 15-20    perempuan          2
3 21-30    laki-laki          1
4 31>      laki-laki          2
5 31>      perempuan          2

Data diatas masih perlu kita normalkan agar sesuai dengan inputan untuk package pyramid untuk itu dibutuhkan sebuah joint table lebih tepatnya menggunakan full join

Full Joint

Penerapan full join akan menghasilkan NA bila data tersebut tidak cocok, hasil penerapan full join yaitu

  kategori jenis_kelamin jumlah
1    15-20     laki-laki      1
2    21-30     laki-laki      1
3      31>     laki-laki      2

Untuk perempuan yaitu

  kategori jenis_kelamin jumlah
1    15-20     perempuan      2
2    21-30          <NA>     NA
3      31>     perempuan      2

Penggabungkan data diatas dan jangan lupa untuk replace NA dengan 0

  laki_laki_kategori perempuan_kategori kategori
1                  1                  2    15-20
2                  1                  0    21-30
3                  2                  2      31>

Bagaiman menurut kalian? Cara mengolah data kependudukan disdukcapil menggunakan R sehingga menjadi Cerdas melalui grafik piramida dan teknik Query data. Nah berikut kode untuk menampilkan grafik berbentuk pyramid yang bisa kalian pelajari

library(dplyr)
library(pyramid)
penduduk <- read.csv('penduduk.csv')
penduduk
pyramid(penduduk, Clab='Kelompok Umur', Llab='Laki-laki', Rlab='Perempuan', 
        Cgap=0.2, Cadj=0, Ldens=-1, AxisFM='d', AxisBM=".", 
        GL=FALSE, main='Piramida Penduduk')

Sedangkan kode R berikut untuk mengolah data dukcapil.csv yang bisa kalian pelajari penggunaan package dplyr yang sangat handal dalam mengolah data terstruktur.

#install.packages('eeptools')
library(dplyr)
library(pyramid)
library(eeptools)
library(tidyverse)

penduduk <- read.csv('data dukcapil.csv')
penduduk

#ubah format tanggal
penduduk$format_tanggal = as.Date(penduduk$tanggal_lahir,'%d/%m/%Y')
penduduk
#hitung umurnya
penduduk$umur_sekarang = ceiling(age_calc(penduduk$format_tanggal, units = 'years'))
penduduk

#kategori umur
penduduk = penduduk %>%
          mutate(kategori = ifelse(umur_sekarang >=15 & umur_sekarang<=20,'15-20',
                    ifelse(umur_sekarang>=21 & umur_sekarang<=30,'21-30',
                           '31>')))


penduduk

gruping = penduduk %>%
    group_by(kategori,jenis_kelamin)%>%
    summarize(jumlah = n())

gruping

laki_laki = gruping %>% filter(jenis_kelamin=='laki-laki')
laki_laki

perempuan = gruping %>% filter(jenis_kelamin=='perempuan')
perempuan


kategori = c('15-20','21-30','31>')


kependudukan = data.frame(kategori)
kependudukan

#joint
laki_laki_kategori = full_join(kependudukan,laki_laki,by='kategori')$jumlah
laki_laki_kategori

perempuan_kategori = full_join(kependudukan,perempuan,by='kategori')$jumlah
perempuan_kategori = replace_na(perempuan_kategori,0)
perempuan_kategori


data_penduduk = data.frame(laki_laki_kategori,perempuan_kategori,kategori)
data_penduduk

pyramid(data_penduduk, Clab='Kelompok Umur', Llab='Laki-laki', Rlab='Perempuan', 
        Cgap=0.2, Cadj=0, Ldens=-1, AxisFM='d', AxisBM=".", 
        GL=FALSE, main='Piramida Penduduk')

Semoga bermanfaat dan semakin cerdas

 

 

Leave a Reply