Basic R Programming

Introduction to R Markdown

Bagian putih dari R Markdown (.Rmd) berguna untuk menulis narasi. Pada bagian ini dapat ditambahkan heading dengan menambahkan hashtag # sebelum kalimat. Narasi yang tidak ditambahkan # sebelum kalimat akan menjadi paragraf biasa.

Bagian abu-abu dari Rmarkdown adalah chunk. Chunk berguna untuk menulis code.

# ini adalah sebuah comment

Tips gunakan shortcut untuk membuat, dan menjalankan chunk agar lebih efisien. - membuat chunk : ctrl + alt + i - menjalankan satu baris pada chunk : ctrl + enter - menjalankan seluruh baris pada chunk : ctrl + shift + enter

Object

Untuk pengolahan data di R, data atau sebuah value dapat disimpan/diassign ke dalam object. Untuk assign object dapat menggunakan <- dan hasilnya akan tersimpan pada environment.

Tips gunakan shortcut alt + - untuk membuat tanda <-

nama <- "victor"
nama
## [1] "victor"

Overwrite object

apabila object yang sama diisi dengan nilai yang berbeda maka nilai yang akan diambil adalah nilai terakhir.

apa isi dari object object1 ?

oject1 <- "laptop"
oject1
## [1] "laptop"
object1 <- "monitor"
object1
## [1] "monitor"

Case Sensitive

R merupakan bahasa pemrograman yang case sensitive, hal ini berarti penamaan kapital dan non-kapital sangat berpengaruh.

object1
## [1] "monitor"
Object1

Comment

Untuk memasukan narasi dalam chunk dapat menggunakan comment dengan menambahkan # sebelum narasi tersebut. Comment tidak dianggap sebagai codingan dalam chunk, sehingga tidak akan menimbulkan error.

object1 <- "monitor" # cara save sebuah value ke object dengan menggunakan simbol  <-

Tips untuk memberikan comment bisa menggunakan shortcut ctrl + shift + c

# object1 <- "laptop"

Dive Deeper 1 (5- 10 menit)

  1. Buat 4 Buah object dengan nama dan isi sebagai berikut :
  • nama : nama anda
  • divisi : divisi anda di BCA
  • tempat : lokasi kantor anda
  • periode : lama anda berada di BCA (dalam satuan tahun)

setelah membuat keempat object diatas, berikan komentar pada setiap akhir baris

# Contoh
tempat <- "MSC" # Menara Standard Chartered lv 31
periode <- 3 # 2018 - 2021
# code here
nama <- "Victor" # nama pendek
divisi <- "Product" # Instructor
tempat <- "MSC" # Lantai 31
periode <- "1 Tahun" # Dari tahun 2021
  1. Object tahun dibawah berisi value 2019. ubah object tahun dengan 2021 dengan melakukan overwrite pada object tahun
tahun <- 2019

tahun <- 2021

Directory

untuk mengetahui lokasi directory dari lokasi Rmd bisa menggunakan fungsi getwd()

getwd()
## [1] "C:/Users/Victor/Downloads/BCA Foundation Class/foundation BCA"

Data Type

Character

Tipe data yang berisi huruf/karakter. ciri2 : diawali dan diakhir dengan tanda petik (““)

untuk mengetahui tipe data pada suatu object bisa menggunakan fungsi class()

nama <- "David"
divisi <- "product"
class(nama)
## [1] "character"
class(divisi)
## [1] "character"

Numeric

Tipe data berisi angka yang dapat berupa angka kontinu (ada koma/pecahan), maupun diskrit (bilangan bulat tanpa koma).

periode <- 1.3
# beberapa nilai gunakan c()

class(periode)
## [1] "numeric"
angka <- 1
class(angka)
## [1] "numeric"

Integer

Tipe data berisi angka yang berupa angka diskrit (bilangan bulat tanpa koma). Umumnya dari data ID (costumer ID, transaction ID, dll). Untuk memaksa numeric menjadi integer, dapat gunakann L dibelakang angka.

obj_int <- c(1L,12L, 33L,11L)
class(obj_int)
## [1] "integer"

Logical

Tipe data yang hanya berisi TRUE atau FALSE. Penulisan TRUE/FALSE dapat disingkat menjadi T/F.

status <- c(TRUE, FALSE, T, F)
class(status)
## [1] "logical"

Bagaimana bila campuran

mix <- c(1000, TRUE, "Tempe")
class(mix)
## [1] "character"
mix
## [1] "1000"  "TRUE"  "Tempe"

Dive Deeper 2

Dive Deeper 3 (10 - 15 menit)

buat 5 buah vector c() dengan nama object dan isi sebagai berikut

  • nama : nama anda dan nama rekan satu breakout room anda (chr)
  • divisi : divisi anda di BCA dan rekan satu breakout room anda (chr)
  • tempat : lokasi kantor anda dan rekan satu breakout room anda (chr)
  • periode : lama anda dan rekan anda bekerja di BCA (int)
  • programming : TRUE apabila anda atau rekan anda memilki basic programming, dan FALSE apabila sebaliknya

Data Structure

Vector

fungsi untuk membuat : c()
karakteristk : - 1 dimensi (baris saja) - hanya bisa menampung 1 tipe data yang sama saja

deret_angka <- c(1, 1.5, 2, 2.5)
nama <- c("Nabiilah", "Yosia", "Agnes", "Victor")
nama
## [1] "Nabiilah" "Yosia"    "Agnes"    "Victor"

cara subset vector menggunakan []

bagaimana caranya bila saya ingin mengambil value “Agnes” pad object nama?

nama[4] # index pada R mulai dari 1
## [1] "Victor"

Factor

factor merupkan bentuk perkembangan dari vector, yang membedakan vector dan factor adalah pada factor objek memiliki levels.

card <- c("Gold", "Platinum", "Silver", "Silver", "Gold")
card <- factor(card)
card
## [1] Gold     Platinum Silver   Silver   Gold    
## Levels: Gold Platinum Silver

list

fungsi untuk membuat : list() karakteristik : - berdimensi 1 (satu kolom) - dapat memiliki lebih dari 1 tipe data

list_temp <- list(2000, TRUE, c("tempe", "tahu"))
list_temp
## [[1]]
## [1] 2000
## 
## [[2]]
## [1] TRUE
## 
## [[3]]
## [1] "tempe" "tahu"

cara subset-nya?

list_temp[[3]][2]
## [1] "tahu"

Matrix

fungsi untuk membuat : matrix() karakteristik: - 2 dimensi (baris dan kolom) - hanya bisa satu tipe data saja

mat1 <- matrix(11:16, nrow = 2)
mat2 <- matrix(divisi, nrow = 1)

cara subset matrix dengan menggunakan [index baris, index kolom]

# mengambil angka 13
mat1[1,2]
## [1] 13
# mengambil angka 16
mat1[2,3]
## [1] 16

Data frame

fungsi untuk membuat: data.frame() karakteristik : - bisa lebih dari 1 tipe data - berdimensi 2 (baris dan kolom)

notes : dbl == num

buah_df <- data.frame(buah = c("Mangga", "Apel", "Durian"), 
           ukuran = c(14, 10, 25))
buah_df
##     buah ukuran
## 1 Mangga     14
## 2   Apel     10
## 3 Durian     25

bagaimana cara mengambil nilai pada kolom buah saja

buah_df$buah
## [1] "Mangga" "Apel"   "Durian"

Dive Deeper 4 (5 - 7 menit)

Buat sebuah data frame yang bernama bca_df yang berisi nama, divisi, tempat, periode, programming. Gunakan vector pada latihan sebelumnya.

# Code here

Basic Statistics (Statistic Descriptive)

Statistik deskriptif adalah statistik yang digunakan untuk menggambarkan kondisi (karakter) dari data. Terdapat 3 hal bagian dalam statistik deskriptif yaitu: 1. Ukuran Pemusatan Data 2. Ukuran Persebaran Data 3. Hubungan Antar data

pada foundation class ini kita akan membahas ukuran pemusatan data saja, selebihnya akan dibahas di kelas Practical statistics.

Measure of Central Tendency (Ukuran Pemusatan Data)

Ukuran pemusatan data menggambarkan dimana data berkumpul yang diwakili oleh sebuah nilai tertentu. Terdapat 3 cara untuk mengetahui ukuran pemusatan:

  • mean
  • median
  • modus

Mean

Cara paling umum untuk membuat perkiraan nilai tunggal dari data yang banyak adalah dengan merata-ratakannya.

Contoh : Data nasabah BCA yang datang ke cabang AAA dalam 10 hari terakhir

pengunjung <- c(1032, 43, 41, 33, 50, 49,39,37,46, 37)

# hitung rata2 dengan mean()
mean(pengunjung)
## [1] 140.7
# cek panjang vector dengan length()
length(pengunjung)
## [1] 10

Kelebihan Mean: - semua data terlibat - semua data memiliki bobot yang sama

Kekurangan Mean: * sensitif terhadap outlier

Median

Median atau nilai tengah diperoleh dengan mengurutkan data terlebih dahulu kemudian mencari nilai tengah dari data.

# median
median(pengunjung)
## [1] 42
sort(pengunjung) # 10 data
##  [1]   33   37   37   39   41   43   46   49   50 1032

Kelebihan: - Outlier tidak mempengaruhi hasil

Kelemahan: - data yang terlibat hanya data yang berada di tengah saja (1 atau 2 data)

Knowledge Check Ukuran pemusatan data pengunjung lebih tepat diwakili oleh mean/median? kenapa? Jawaban: median, karena biar tidak sensitif dengan nilai outlier

Pilihan lain bila dengan menggunakan trimmed mean, yaitu rata-rata dengan terlebih dahulu memotong x persen nilai terkecil dan terbesar dari data:

# gunakan parameter trim pada mean()
mean(pengunjung, trim = 0.1) # trim 0.1, akan menghapus 10 persen dari data kita pada bagian bawah dan bagian atas
## [1] 42.75
sort(pengunjung)
##  [1]   33   37   37   39   41   43   46   49   50 1032

nilai yang akan dihilangkan adalah nilai 33 & 1032

ketika total datanya ada 18 dan dibagi 10 kan hasilnya 1.8. Hasilnya itu akan dibulatkan kebawah

Modus

Modus berguna untuk mencari nilai yang paling sering muncul. Modus lebih tepat digunakan pada data kategorikal. * digunakan untuk data kategorik

most <- function(x){
  table_x <- table(x)
  name <- names(sort(table_x, decreasing = T))
  name[1]
}
card_sample <- c("Gold","Silver","Gold","Silver","Gold","Silver","Silver","Gold","Platinum","Silver","Gold","Platinum","Platinum","Silver","Gold","Platinum","Silver","Gold","Platinum","Platinum","Silver","Silver","Silver","Silver","Platinum","Gold","Silver","Gold","Platinum","Gold","Silver","Gold","Gold","Silver","Silver","Platinum","Silver","Silver","Gold","Platinum","Gold","Platinum","Platinum","Gold","Platinum","Platinum","Gold","Platinum","Silver","Gold")
table(card_sample)
## card_sample
##     Gold Platinum   Silver 
##       17       15       18
most(card_sample)
## [1] "Silver"