Let’s Get Started with R

Pendahuluan

Modul “R Fundamental for Data Science” ini adalah modul pembuka DQLab untuk topik pengolahan data menggunakan R.

Dengan durasi singkat selama 15 menit, kamu akan mempelajari dan mendapatkan hal-hal berikut:

  • Mengerti apa dan kenapa R digunakan oleh para data scientist dan dicari oleh perusahaan besar dunia.
  • Menguasai dasar bahasa R seperti penggunaan teks, angka, dan rumus.
  • Menguasai penggunaan tipe data fundamental R.
  • Mengerti bagaimana membaca file Excel.
  • Mengenali bagaimana grafik dihasilkan di R.
  • Sertifikat pencapaian dari PHI-Integration dan Universitas Multimedia Nusantara (Kompas Group).

Short cut

Tools > Keyboard Shortcuts Help (Alt + Shift + K)

Shortcut 1

  • Control/Ctrl + 1: Source editor (your script)
  • Control/Ctrl + 2: Console
  • Control/Ctrl + 3: Help
  • Control/Ctrl + 4: History
  • Control/Ctrl + 5: Files
  • Control/Ctrl + 6: Plots
  • Control/Ctrl + 7: Packages
  • Control/Ctrl + 8: Environment
  • Control/Ctrl + 9: Viewer

Shortcut 2

  • <- (Alt + - )
  • %<% (Ctrl + Shift + M)

Shortcut 3

  • Comment or uncomment lines (Control + Shift + C)
  • Move Lines Up/Down (Alt+Up/Down)
  • Delete Line (Ctrl+D)
  • Select (Shift+[Arrow])
  • Select Word (Ctrl+Shift+Left/Right)
  • Select to Line Start (Alt+Shift+Left)
  • Select to Line End (Alt+Shift+Right)

Shortcut 4

  • Run current line (Control + Enter)
  • Run current line (retain cursor position) (Alt+Enter)
  • Run all lines of code (Control + A + Enter)

Shortcut 5

  • Clear Console (Ctrl+L)
  • Restart the current R session (Control + Shift + F10)
  • Search the command history from the Console (Control + [up arrow])

Shortcut 6

  • Quickly Find Files and Functions (control/ctrl + .)
  • Open Files (Ctrl+O)
  • New File R Script (Ctrl+Shift+N)

R Markdown

  • Insert R chunk (Ctrl+Alt+I)
  • Open html/Preview (Alt + Shift + K)
  • Run selected line(s) (Ctrl+Enter)
  • Run Current Chunk (Ctrl+Shift+Enter)
  • Run Next Chunk (Ctrl+Alt+N)
  • Run All (Ctrl+Alt+R)
  • Run Above Chunk (Ctrl+Alt+Shift+P)
  • Reformat Section (Ctrl + Shift + A)

Jadi, apa itu R?

R merupakan nama sebuah bahasa pemrograman sekaligus software untuk pengolahan data dan grafik. R sangat popular saat ini karena memiliki jumlah fitur yang sangat besar yaitu mencapai puluhan ribu fitur.

Bahasa pemrograman R dan pustaka (library) dapat digunakan untuk membaca file teks, membaca database, menghasilkan berbagai grafik, menghasilkan dashboard yang menarik, hingga ke penggunaan machine learning.

Selain itu, R bersifat gratis dan open source. Artinya, dengan R kita tidak perlu biaya lisensi macam-macam untuk menggunakannya secara bebas dan luas.

Data Scientist dan R

Meluasnya penggunaan aplikasi yang terpasang di smartphone dan pemakaian sistem digital di seluruh perusahaan menghasilkan data dalam volume yang besar. Namun, data-data bervolume besar ini belum tentu menjadi informasi yang dibutuhkan oleh organisasi dan bisnis jika tidak diolah dengan baik.

Untuk menjawab permasalahan tersebut muncullah sebuah disiplin ilmu yang mempelajari bagaimana mengolah data menjadi informasi yang berguna yang dikenal dengan nama data science.

Seseorang yang bekerja dengan dibekali ilmu data science dinamakan data scientist yang pada saat ini merupakan salah satu profesi paling hot menurut LinkedIn.

Untuk membantu dalam pekerjaannya, data scientist perlu dibekali dengan aplikasi/kakas yang bagus. Bahasa pemrograman R dengan segala kekayaan di library (pustaka) yang dimilikinya merupakan jawaban bagi pekerjaan data scientist.

Mengapa Data Scientist menggunakan R?

Apa yang sebenarnya membuat para data scientist tertarik belajar dan menggunakan R?

Easier - Faster - Richer - Proven

Ada empat alasan utama, yaitu:

  • Lebih Mudah Dipelajari (Easier): R relatif lebih mudah dipelajari dibandingkan dengan bahasa lain, seperti Java, C#, Javascript, dan lain-lain.

  • Lebih Cepat (Faster): Banyak fungsi R memberikan hasil jauh lebih cepat dibandingkan dengan aplikasi lain. Contoh: R dapat menghasilkan berbagai visualisasi yang menarik dalam waktu singkat, sehingga data scientist dapat jauh lebih produktif dalam memahami data dan menghasilkan informasi.

  • Lebih kaya fitur (Richer): Dengan puluhan ribu fitur yang terus berkembang, hampir semua permasalahan data dapat dijawab oleh R. Sebagai contoh, untuk mengatasi permasalahan optimasi stok di e-commerce, R memiliki fungsi menghasilkan rekomendasi product packaging.

  • Telah terbukti (Proven): R sudah digunakan oleh banyak data scientist perusahaan besar seperti Anz, Uber, dan Facebook dan memberikan solusi riil. Tidak heran jika akhirnya dari kisah sukses ini, banyak lowongan data scientist mencamtumkan R sebagai syarat keterampilan yang harus dimiliki.

“Hello World” di R

"Hello World"
## [1] "Hello World"
10+7
## [1] 17

Teks, Angka dan Rumus Perhitungan

R merupakan bahasa yang dapat memiliki berbagai jenis kumpulan perintah yang diketikkan oleh pengguna. Mulai dari kumpulan perintah untuk melakukan perhitungan matematika sederhana, kumpulan perintah untuk menghasilkan grafik, kumpulan perintah untuk pemodelan berbasis statistik, hingga pemodelan berbasis pembelajaran mesin (machine learning).

9
## [1] 9
"Budi"
## [1] "Budi"
9*3
## [1] 27

Menggunakan Fungsi Print

Pada praktik sebelumnya kita telah menampilkan teks dan angka dengan menuliskannya secara langsung. Namun, alangkah baiknya jika kita menggunakan fungsi bawaan yang bernama print.

print("Hello World")
## [1] "Hello World"
print(3 + 4)
## [1] 7

Huruf Besar, Huruf Kecil dan Format Angka

Bahasa pemograman R bersifat case sensitive. Artinya, kita perlu memperhatikan penulisan kode yang dengan menggunakan huruf besar dan/atau huruf kecil. Sebagai contoh: “Budi”, “budi”, dan “BUDI” bukan merupakan teks yang sama.

Selain itu, pada saat mengirimkan jawaban melalui code editor di DQLab, format angka (termasuk di penulisan tanggal) sangat berpengaruh terhadap penilaian apakah jawaban benar atau tidak. Sebagai contoh:

  • 01 dan 1 merupakan dua angka yang dianggap berbeda pada saat pengiriman jawaban.

  • “12-01-1987” dan “12-1-1987” adalah hal berbeda pada saat mengirimkan jawaban.

01
## [1] 1
1
## [1] 1
"01-01-1980"
## [1] "01-01-1980"
"1-1-1980"
## [1] "1-1-1980"
"Budi"
## [1] "Budi"
"BUDI"
## [1] "BUDI"

Function

Function merupakan suatu objek di R yang parameternya dapat diisi oleh satu atau beberapa teks maupun satu atau beberapa angka. Setelah dieksekusi, function ini akan mengembalikan satu atau beberapa nilai sesuai dengan tujuan function itu diperuntukkan untuk apa.

Mari kita lihat satu function yang akan sering digunakan, yaitu c. Fungsi c ini digunakan untuk membuat urutan angka maupun teks (ini merupakan peruntukan function-nya).

c(5:10)
## [1]  5  6  7  8  9 10

Variable

Alangkah baiknya setiap perintah di setiap baris yang ditunjukkan sebelumnya disimpan ke dalam sebuah variable. Untuk membuat sebuah variable, kita dapat mendefinisikan namanya dan kemudian mengisinya dengan isian berupa angka, teks, bilangan dengan operasi matematis, atau hasil sebuah function.

budi_berat_kg <- 68
santi_berat_kg <- 54.5
budi_berat_kg
## [1] 68
santi_berat_kg
## [1] 54.5
pi <- 3.14
pi
## [1] 3.14

Comment pada R

Comment atau komentar merupakan teks yang dimasukkan di dalam kode R. Namun, comment ini tidak akan dianggap sebagai sebuah baris perintah yang dapat dieksekusi. Comment ini umumnya digunakan sebagai catatan untuk menjelaskan potongan kode yang ditulis.

Bagaimanakah caranya membuat sebuah comment? Baiklah, membuat sebuah comment sangat mudah. Caranya adalah dengan menuliskan tanda pagar (#) yang kemudian diikuti dengan tulisan/keterangan apapun.

2 + 2 #Ini adalah baris komentar
## [1] 4

Vector, List, and Data Frame

perlu mengenal tiga tipe data yang paling sering digunakan di R, yaitu

Vector

Vector merupakan tipe data sederhana di R yang menyimpan deretan nilai (lebih dari satu nilai) dengan tipe data sama untuk setiap elemennya. Maksudnya, jika tipe datanya berupa teks maka seluruh elemennya harus bertipe teks. Demikian juga jika tipenya angka maka seluruh elemennya berisi angka semua.

Vector didefinisikan dengan nama function yang memilki satu huruf saja: c, yang telah kamu pelajari dan praktikkan sebelumnya. Sebagai contoh untuk membuat vector yang isinya angka dengan nilai 2, 5, dan 7, maka perintahnya adalah c(2, 5, 7).

# Ini adalah contoh vector untuk angka numerik dengan 3 data c(4, 5, 6)
c(4, 5, 6)
## [1] 4 5 6
# Variable bernama angka dengan input berupa vector
angka <- c(4, 5, 6)

# Tampilkan isi variable angka dengan fungsi print
print(angka)
## [1] 4 5 6

Deretan Nilai dengan Operator “:” (Titik Dua)

Operator “:” atau titik dua merupakan operator yang digunakan untuk mempersingkat penulisan dari nilai-nilai vector yang berurutan. Sebagai contoh, perintah c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) yang membentuk vector dengan angka 1 sampai dengan 10 dapat disingkat dengan c(1:10).

angka1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(angka1)
##  [1]  1  2  3  4  5  6  7  8  9 10
angka2 <- c(1:10)
print(angka2)
##  [1]  1  2  3  4  5  6  7  8  9 10

Vector dengan Isi Teks

Selain angka, vector juga bisa diisi dengan teks.

# Variable nama_mahasiswa dengan input character
nama_mahasiswa <- c("Amira", "Budi", "Charlie")
print(nama_mahasiswa)
## [1] "Amira"   "Budi"    "Charlie"
nama_mahasiswa
## [1] "Amira"   "Budi"    "Charlie"

Index dan Accessor pada Vector

  • Untuk mengambil isi vector, kamu dapat mengambil berdasarkan posisinya. Posisi ini diwakili oleh angka urutan, yang disebut sebagai index.
  • Cara penulisan index di variable adalah angka yang diapit dengan kurung siku tunggal atau ganda. Penulisan ini selanjutnya disebut sebagai accessor.
  • Jika index yang ingin diambil lebih dari satu, maka hanya boleh menggunakan kurung siku tunggal.
# Buat vector variable bernama angka yang isinya 20 s/d 30
angka <- c(20:30)
print(angka)
##  [1] 20 21 22 23 24 25 26 27 28 29 30
# Tampilkan isi variable angka pada posisi ke 3
print(angka[3])
## [1] 22
# Tampilkan isi variable angka pada posisi ke 5 gunakan kurung siku ganda
print(angka[[5]])
## [1] 24
# Tampilkan isi variable angka pada posisi ke 4 s/d 6
print(angka[4:6])
## [1] 23 24 25
# Buat vector teks dengan nama kode_prodi yang diisi sesuai petunjuk soal
kode_prodi <- c("DKV","ILKOM","ICT")

# Tampilkan isi indeks ketiga dari kode_prodi
print(kode_prodi[3])
## [1] "ICT"

Named Vector

Selain dengan angka, indeks pada vector juga dapat dilengkapi dengan nama untuk tiap elemennya dengan menggunakan format penulisan name=value. Penggunaan format name=value disebut dengan named vector.

#Membuat named vector dengan nama nilai
nilai <- c(statistik = 89, fisika = 95, ilmukomunikasi = 100)

#Menampilkan isi variable nilai
print(nilai)
##      statistik         fisika ilmukomunikasi 
##             89             95            100
#Menampilkan isi dengan nama fisika
print(nilai["fisika"])
## fisika 
##     95
#Buat variable profil sesuai permintaan soal
profil <- c(nama="Budi", tempat_tinggal="Jakarta", tingkat_pendidikan="S1")

#Tampilkan variable profil
print(profil)
##               nama     tempat_tinggal tingkat_pendidikan 
##             "Budi"          "Jakarta"               "S1"

List

List merupakan jenis data di R yang mirip dengan vector. Perbedaannya adalah list dapat menyimpan lebih dari satu tipe data dasar di setiap elemennya. Untuk memasukkan isi ke dalam struktur data ini kita gunakan function list.

# List disimpan dalam variable dengan nama list_random
list_random <- list(2, "Budi", 4)

# Menampilkan isi list
list_random 
## [[1]]
## [1] 2
## 
## [[2]]
## [1] "Budi"
## 
## [[3]]
## [1] 4
# List disimpan dalam variable dengan nama dati2
dati2 <- list(nama = "Denpasar", propinsi = "Bali")

# Menampilkan isi list dati2
dati2
## $nama
## [1] "Denpasar"
## 
## $propinsi
## [1] "Bali"
# Buat variable kota sesuai permintaan soal
kota <- list(nama_kota="Makassar", propinsi="Sulawesi Selatan", luas_km2=199.3)

# Tampilkan isi variable list kota
kota
## $nama_kota
## [1] "Makassar"
## 
## $propinsi
## [1] "Sulawesi Selatan"
## 
## $luas_km2
## [1] 199.3

List Index

Untuk mengambil isi list, kamu dapat mengambil dari posisi index-nya. Ketentuan dan caranya sama persis dengan apa yang telah kamu pelajari di vector.

# Membentuk list dengan 2 angka dan 1 character
list_saya <- list(2, "Budi", 4)

# Menampilkan index kedua dengan aksesor kurung siku tunggal 
list_saya[2]
## [[1]]
## [1] "Budi"
# Menampilkan index kedua dengan aksesor kurung siku ganda
list_saya[[2]]
## [1] "Budi"
# Menampilkan index kedua s/d ketiga
list_saya[2:3]
## [[1]]
## [1] "Budi"
## 
## [[2]]
## [1] 4
list_satu <- list(1, "Online", TRUE)
list_satu[1]
## [[1]]
## [1] 1

Mines indez to delete/hide values on that index

mylist <- list("Belajar R", 1, 3, FALSE, 4)
mylist[-1]
## [[1]]
## [1] 1
## 
## [[2]]
## [1] 3
## 
## [[3]]
## [1] FALSE
## 
## [[4]]
## [1] 4

Range mines index

mylist[-3:-4]
## [[1]]
## [1] "Belajar R"
## 
## [[2]]
## [1] 1
## 
## [[3]]
## [1] 4

Range mines 1-5 = -4

mylist[1-5]
## [[1]]
## [1] "Belajar R"
## 
## [[2]]
## [1] 1
## 
## [[3]]
## [1] 3
## 
## [[4]]
## [1] 4

Index error

# mylist[1,2,5]

This for multiple index

mylist[1][2][5]
## [[1]]
## NULL

Data Frame

Data frame merupakan jenis struktur data yang dirancang untuk representasi tabel, yang terdiri dari atas kolom dengan tiap kolom berisi list ataupun vector dengan jumlah data yang sama.

Untuk membuat data frame kita bisa gunakan function data.frame.

#Membuat dua variable vector
fakultas <- c("Bisnis", "D3 Perhotelan", "ICT", "Ilmu Komunikasi", "Seni dan Desain")
jumlah_mahasiswa <- c(260, 28, 284, 465, 735)

#Membuat data frame dari kedua vector di atas
info_mahasiswa <- data.frame(fakultas, jumlah_mahasiswa)

#Melihat isi data frame
info_mahasiswa
#Buat vector baru sebagai representasi akreditasi
akreditasi <- c("A", "A", "B", "A", "A")

#Buat data frame dari ketiga vector di atas
info_mahasiswa <- data.frame(info_mahasiswa, akreditasi)
info_mahasiswa

Cara Akses Data Frame

Data frame memiliki banyak kolom dan dapat diakses dengan melalui nama kolom yang dimilikinya. Caranya adalah menggunakan accessor dengan tanda $ yang diikuti dengan nama kolom.

#Membuat tiga variable vector
fakultas <- c("Bisnis", "D3 Perhotelan", "ICT", "Ilmu Komunikasi", "Seni dan Desain")
jumlah_mahasiswa <- c(260, 28, 284, 465, 735)
akreditasi <- c("A","A","B","A","A")

#Membuat data frame dari kedua vector di atas
info_mahasiswa <- data.frame(fakultas, jumlah_mahasiswa, akreditasi)

#Menampilkan kolom jumlah_mahasiswa
info_mahasiswa$jumlah_mahasiswa
## [1] 260  28 284 465 735
#Menampilkan kolom fakultas
info_mahasiswa$fakultas
## [1] "Bisnis"          "D3 Perhotelan"   "ICT"             "Ilmu Komunikasi"
## [5] "Seni dan Desain"

Chart and Graphic

Jika kita ingin eksplorasi dan menganalisa data lebih jauh, grafik adalah tipe tampilan yang tidak bisa ditawar. R memiliki pustaka (library) dengan fungsi-fungsi yang kaya untuk menghasilkan grafik.

Bab ini akan berisi perkenalan singkat dan padat untuk menunjukkan kemampuan ini dengan menggunakan package ggplot2. Dengan pendekatan yang bersifat demo, kamu cukup mengikuti petunjuk sehingga bisa membayangan apa saja yang dapat kamu lakukan dengan ggplot2.

Package ggplot2

Untuk fungsi yang lebih powerful seperti menghasilkan grafik yang advanced (lanjut), kita perlu menggunakan package.

Untuk memahami konsep package ini, pada editor terdapat potongan code untuk menghasilkan grafik. Cobalah jalankan, dan kamu akan mendapatkan error seperti ini.

Error in ggplot(info_mahasiswa, aes(x = fakultas, y = jumlah_mahasiswa,  : 
  could not find function "ggplot"
# gambar <- ggplot(info_mahasiswa, aes(x=fakultas, y=jumlah_mahasiswa, fill=fakultas))

Terlihat ada tampilan error berwarna merah yang menyatakan bahwa fungsi ggplot tidak ditemukan. Ini karena fungsi tersebut bukan fungsi standar, tapi harus menggunakan package ggplot2 dengan fungsi library.

fakultas <- c("Bisnis", "D3 Perhotelan", "ICT", "Ilmu Komunikasi", "Seni dan Desain")
jumlah_mahasiswa <- c(260, 28, 284, 465, 735)
akreditasi <- c("A","A","B","A","A")

info_mahasiswa <- data.frame(fakultas, jumlah_mahasiswa, akreditasi)
info_mahasiswa
#Menggunakan package ggplot2
library("ggplot2")
## Warning: package 'ggplot2' was built under R version 4.1.3
#Membuat kanvas
gambar <- ggplot(info_mahasiswa, aes(x=fakultas, y=jumlah_mahasiswa, fill=fakultas))
gambar <- gambar + geom_bar(width=1, stat="identity")
gambar

Membuat Grafik Sebaran Mahasiswa (1)

Pada praktek kali ini, kita akan menghasilkan bar chart sederhana dengan menggunakan variabel data frame bernama info_mahasiswa yang kita hasilkan pada subbab “Vector, List dan Data Frame”. Variable ini masih bersifat statis atau hard code, artinya data frame ini bukan berdasarkan pembacaan dari suatu file atau database.

Cara membuat grafik di R bisa menggunakan banyak cara, salah satunya dengan library ggplot2 - dimana kita menggambar chart secara bertahap, yaitu dengan konsep layering (lapisan demi lapisan).

#Membuat dua vector
fakultas <- c("Bisnis", "D3 Perhotelan", "ICT", "Ilmu Komunikasi", "Seni dan Desain")
jumlah_mahasiswa <- c(260, 28, 284, 465, 735)
akreditasi <- c("A","A","B","A","A")

#Buat data frame dari ketiga vector di atas
info_mahasiswa <- data.frame(fakultas, jumlah_mahasiswa, akreditasi)
info_mahasiswa
#Menggunakan package ggplot2
library(ggplot2)

# Membuat kanvas
# Lapisan pertama kita ibaratkan sebagai "kanvas" lukisan
# hasil ggplot2 disimpan pada variable gambar. Variable ini yang akan menyimpan seluruh grafik dan digunakan untuk menggambar
gambar <- ggplot(info_mahasiswa, aes(x=fakultas, y=jumlah_mahasiswa, fill=fakultas))

# Penambahan bentuk, warna dan ukuran dilakukan dengan menggunakan tanda operator plus ( + ) diikuti fungsi terkait.

#Menambahkan objek bar chart, simpan kembali sebagai variable gambar
gambar <- gambar + geom_bar(width=1, stat="identity")

#Menambahkan judul grafik
gambar <- gambar + ggtitle("Jumlah Mahasiswa per Fakultas")

#Menambahkan caption pada sumbu x
gambar <- gambar + xlab("Nama Fakultas")

#Menambahkan caption pada sumbu y
gambar <- gambar + ylab("Jumlah Mahasiswa")

#Menggambar grafik
gambar

Membaca File Excel

Secara umum, pengolahan data di R mengharuskan membaca file dari spreadsheet, contohnya Excel. Di sub bab ini, kita akan menggunakan file yang berisi data jumlah mahasiswa tiap angkatan per tahun

File bernama mahasiswa.xlsx akan dibaca dengan menggunakan fungsi read.xlsx dari package openxlsx dengan cara berikut.

# install.packages("openxlsx")
#Menggunakan package ggplot2
library(ggplot2)
#Menggunakan package openxlsx
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.1.3
#Membaca file mahasiswa.xlsx
mahasiswa <- read.xlsx("https://storage.googleapis.com/dqlab-dataset/mahasiswa.xlsx",sheet = "Sheet 1")

#Menampilkan data
print(mahasiswa)
##    ANGKATAN        Fakultas                          Prodi  Kode JUMLAH
## 1      2015          Bisnis                      Akuntansi  AKUN     88
## 2      2016          Bisnis                      Akuntansi  AKUN     85
## 3      2017          Bisnis                      Akuntansi  AKUN    103
## 4      2016 Seni dan Desain                        Arsitek    AR     28
## 5      2017 Seni dan Desain                        Arsitek    AR     45
## 6      2015 Seni dan Desain       Desain Komunikasi Visual   DKV    279
## 7      2016 Seni dan Desain       Desain Komunikasi Visual   DKV    314
## 8      2017 Seni dan Desain       Desain Komunikasi Visual   DKV    337
## 9      2015 Seni dan Desain              Film dan Televisi   FTV    284
## 10     2016 Seni dan Desain              Film dan Televisi   FTV    274
## 11     2017 Seni dan Desain              Film dan Televisi   FTV    300
## 12     2015 Ilmu Komunikasi                Ilmu Komunikasi ILKOM    499
## 13     2016 Ilmu Komunikasi                Ilmu Komunikasi ILKOM    275
## 14     2017 Ilmu Komunikasi                Ilmu Komunikasi ILKOM    313
## 15     2015 Ilmu Komunikasi                    Jurnalistik    JR      1
## 16     2016 Ilmu Komunikasi                    Jurnalistik    JR    251
## 17     2017 Ilmu Komunikasi                    Jurnalistik    JR    186
## 18     2015          Bisnis                      Manajemen   MAN    169
## 19     2016          Bisnis                      Manajemen   MAN    163
## 20     2017          Bisnis                      Manajemen   MAN    160
## 21     2017   D3 Perhotelan                     Perhotelan   HTL     28
## 22     2015             ICT               Sistem Informasi    SI    104
## 23     2016             ICT               Sistem Informasi    SI     95
## 24     2017             ICT               Sistem Informasi    SI    113
## 25     2015             ICT                Sistem Komputer    SK     20
## 26     2016             ICT                Sistem Komputer    SK     20
## 27     2017             ICT                Sistem Komputer    SK     18
## 28     2016             ICT                 Teknik Elektro    TE      4
## 29     2017             ICT                 Teknik Elektro    TE      7
## 30     2016             ICT                  Teknik Fisika    TF      7
## 31     2017             ICT                  Teknik Fisika    TF     16
## 32     2015             ICT             Teknik Informatika    TI    125
## 33     2016             ICT             Teknik Informatika    TI    168
## 34     2017             ICT             Teknik Informatika    TI    164
## 35     2017             ICT Teknik Informatika Dual Degree   TID      6
#Menampilkan kolom Prodi
print(mahasiswa$Prodi)
##  [1] "Akuntansi"                      "Akuntansi"                     
##  [3] "Akuntansi"                      "Arsitek"                       
##  [5] "Arsitek"                        "Desain Komunikasi Visual"      
##  [7] "Desain Komunikasi Visual"       "Desain Komunikasi Visual"      
##  [9] "Film dan Televisi"              "Film dan Televisi"             
## [11] "Film dan Televisi"              "Ilmu Komunikasi"               
## [13] "Ilmu Komunikasi"                "Ilmu Komunikasi"               
## [15] "Jurnalistik"                    "Jurnalistik"                   
## [17] "Jurnalistik"                    "Manajemen"                     
## [19] "Manajemen"                      "Manajemen"                     
## [21] "Perhotelan"                     "Sistem Informasi"              
## [23] "Sistem Informasi"               "Sistem Informasi"              
## [25] "Sistem Komputer"                "Sistem Komputer"               
## [27] "Sistem Komputer"                "Teknik Elektro"                
## [29] "Teknik Elektro"                 "Teknik Fisika"                 
## [31] "Teknik Fisika"                  "Teknik Informatika"            
## [33] "Teknik Informatika"             "Teknik Informatika"            
## [35] "Teknik Informatika Dual Degree"

Membuat Grafik Sebaran Mahasiswa (2)

Setelah memiliki kemampuan membaca sumber data dari luar yaitu file Excel yang berisi data jumlah mahasiswa, kita akan kembali menghasilkan grafik sebaran yang sudah kita lakukan sebelumnya

library(ggplot2)
#Menggunakan package openxlsx
library(openxlsx)

#Membaca file mahasiswa.xlsx
mahasiswa <- read.xlsx("https://storage.googleapis.com/dqlab-dataset/mahasiswa.xlsx",sheet = "Sheet 1")

#Membuat kanvas
gambar <- ggplot(mahasiswa, aes(x=Fakultas, y=JUMLAH, fill=Fakultas))

#Menambahkan objek bar chart, simpan kembali sebagai variable gambar
gambar <- gambar + geom_bar(width=1, stat="identity")

#Menggambar grafik
gambar

Trend Jumlah Mahasiswa dari Tahun ke Tahun

Grafik batang yang telah ditampilkan sebelumnya cukup baik. Namun, informasi yang terkandung masih belum diekplorasi lebih detail. Sebagai contoh, bagaimanakah jika kita ingin melihat trend jumlah mahasiswa tiap fakultas dari tahun ke tahun?

library(ggplot2)
#Menggunakan package openxlsx
library(openxlsx)

#Membaca file mahasiswa.xlsx
mahasiswa <- read.xlsx("https://storage.googleapis.com/dqlab-dataset/mahasiswa.xlsx",sheet = "Sheet 1")

#Menghitung Jumlah Data by Fakultas
summarybyfakultas <- aggregate(x=mahasiswa$JUMLAH, by=list(Kategori=mahasiswa$Fakultas, Tahun=mahasiswa$ANGKATAN), FUN=sum)
summarybyfakultas <- setNames(summarybyfakultas, c("fakultas","tahun", "jumlah_mahasiswa"))
summarybyfakultas
summarybyfakultas$tahun = as.factor(summarybyfakultas$tahun)

ggplot(summarybyfakultas, aes(x=fakultas, y=jumlah_mahasiswa)) + 
  geom_bar(stat = "identity", aes(fill = tahun), width=0.8, position = position_dodge(width=0.8)) + 
  theme_classic() 

Dari grafik di atas terlihat peningkatan secara konsiten dari tahun ke tahun oleh fakultas “ICT” dan “Seni dan Desain”. Di samping itu, Fakultas “D3 perhotelan” juga terlihat baru muncul di tahun 2017. Untuk fakultas “Bisnis” dan “Ilmu Komunikasi” terlihat fluktuasi jumlah mahasiswa selama tiga tahun.

Pie Chart

Pie chart merupakan chart favorit bagi banyak analis untuk menunjukkan proporsi data. Berdasarkan data frame mahasiswa, jumlah mahasiswa per fakultas adalah kasus proporsi yang dapat ditampilkan dengan pie chart.

library(ggplot2)
library(openxlsx)
#Membaca file mahasiswa.xlsx
mahasiswa <- read.xlsx("https://storage.googleapis.com/dqlab-dataset/mahasiswa.xlsx",sheet = "Sheet 1")

#Menghitung Jumlah Data by Fakultas
summarybyfakultas <- aggregate(x=mahasiswa$JUMLAH, by=list(Kategori=mahasiswa$Fakultas), FUN=sum)
summarybyfakultas <- setNames(summarybyfakultas, c("fakultas","jumlah_mahasiswa"))

piechart<- ggplot(summarybyfakultas, aes(x="", y=jumlah_mahasiswa, fill=fakultas))+ geom_bar(width = 1, stat = "identity")
piechart <- piechart + coord_polar("y", start=0)
piechart <- piechart + ggtitle("Disribusi Mahasiswa per Fakultas")
piechart <- piechart + scale_fill_brewer(palette="Blues")+ theme_minimal()
piechart <- piechart + guides(fill=guide_legend(title="Fakultas"))
piechart <- piechart + ylab("Jumlah Mahasiswa") 
piechart

Terlihat bahwa porsi fakultas “Seni dan Desain” dan “Ilmu Komunikasi” menempati porsi terbesar. Angka 0 s/d 5000 yang ditampilkan di luar pie chart menunjukkan rentang jumlah mahasiswa secara akumulatif.

Filtering

Pengerjaan filtering di data frame dapat dilakukan dengan menambahkan operator %in% dengan input berupa vector.

library("ggplot2")
library("openxlsx")

#Membaca file mahasiswa.xlsx
mahasiswa <- read.xlsx("https://storage.googleapis.com/dqlab-dataset/mahasiswa.xlsx",sheet = "Sheet 1")

#Menghitung Jumlah Data by Fakultas
summarybyfakultas <- aggregate(x=mahasiswa$JUMLAH, by=list(Kategori=mahasiswa$Fakultas, Tahun=mahasiswa$ANGKATAN), FUN=sum)
summarybyfakultas <- setNames(summarybyfakultas, c("fakultas","tahun", "jumlah_mahasiswa"))
summarybyfakultas
summarybyfakultas$tahun = as.factor(summarybyfakultas$tahun)
summarybyfakultas[summarybyfakultas$fakultas %in% c("ICT", "Ilmu Komunikasi"),]
ggplot(summarybyfakultas[summarybyfakultas$fakultas %in% c("ICT", "Ilmu Komunikasi"),], aes(x=fakultas, y=jumlah_mahasiswa)) + 
  geom_bar(stat = "identity", aes(fill = tahun), width=0.8, position = position_dodge(width=0.8)) + 
  theme_classic() 

Grafiknya sama dengan subbab “Tren Jumlah Mahasiswa dari Tahun ke Tahun” tapi sudah dengan filter dua fakultas, yaitu “ICT” dan “Ilmu Komunikasi”.

di sini summarybyfakultas$fakultas %in%c(“ICT”, “Ilmu Komunikasi”) artinya melakukan filter data yang ada di kolom fakultas dari data frame summarybyfakultas.

Sedangkan perintah lengkap summarybyfakultas[summarybyfakultas$fakultas %in%c(“ICT”, “Ilmu Komunikasi”),] artinya mengambil data yang sudah terfilter untuk seluruh kolom.