13 minute read

Bekerja dengan data

Pada post sebelumnya telah saya jelaskan beberapa struktur data di R, sekarang kita akan melihat bagaimana bentuk real-nya di R.

Untuk data berbentuk list, akan saya jelaskan sekalian bersamaan dengan materi tidyverse yah.

Single Value

Contoh:

a = 100
x = 50
z = 'Indonesia'

Vector

Vector didefinisikan dengan menggunakan perintah c(); merupakan istilah lain dari array. Bayangkan sebagai satu kolom data (atau satu baris) dalam Ms. Excel.

Contoh:

tinggi_badan = c(164,149,180,184,153,90,139,199,186,158,197)
tinggi_badan
##  [1] 164 149 180 184 153  90 139 199 186 158 197

Elemen Vector

Ada yang sadar gak dengan tanda [1] setiap kali kita running suatu skrip di R.

Apa sih artinya?

Itu adalah tanda posisi pertama dari vector. Tanda [] digunakan untuk memanggil isi vector di posisi tertentu. Istilah kerennya adalah subset dari suatu vector.

Contoh:

tinggi_badan[1]
## [1] 164
tinggi_badan[7]
## [1] 139
tinggi_badan[10]
## [1] 158
tinggi_badan[3:5]
## [1] 180 184 153
tinggi_badan[c(1,7,10)]
## [1] 164 139 158
tinggi_badan[-c(1,7,10)] #pengeculian
## [1] 149 180 184 153  90 199 186 197

Operasi Aritmatika Pada Vector

Vector yang berupa numerik bisa dilakukan operasi aritmatik.

Contoh:

status = (tinggi_badan - 100)/50
status
##  [1]  1.28  0.98  1.60  1.68  1.06 -0.20  0.78  1.98  1.72  1.16  1.94

Fungsi Pada Vector

Vector berupa numerik juga bisa dikenakan fungsi perhitungan seperti:

max(tinggi_badan) # memperoleh nilai maksimum x
## [1] 199
min(tinggi_badan) # memperoleh nilai minimum x
## [1] 90
range(tinggi_badan) # memperoleh range vektor x
## [1]  90 199
length(tinggi_badan) # memperoleh jumlah vektor x
## [1] 11
sum(tinggi_badan) # memperoleh total penjumlahan vektor x
## [1] 1799
mean(tinggi_badan) # memperoleh nilai mean vektor x
## [1] 163.5455
sd(tinggi_badan) # standar deviasi vektor x
## [1] 31.5194
var(tinggi_badan) # varian vektor x
## [1] 993.4727
sort(tinggi_badan) # mengurutkan elemen vektor x dari yang terbesar
##  [1]  90 139 149 153 158 164 180 184 186 197 199

Generating Sequences

Sequences atau deret bisa kita bangun menggunakan R dengan dua cara:

  1. Menggunakan :.
  2. Menggunakan fungsi seq().

Contoh:

nomor_1 = c(1:10)
nomor_1
##  [1]  1  2  3  4  5  6  7  8  9 10
# perintah untuk menghitung cumulative sum
cumsum(nomor_1)
##  [1]  1  3  6 10 15 21 28 36 45 55
nomor_2 = seq(1,10,0.4) # generating sequence dari 1 hingga 10 dengan jeda 0.4
nomor_2
##  [1] 1.0 1.4 1.8 2.2 2.6 3.0 3.4 3.8 4.2 4.6 5.0 5.4 5.8 6.2 6.6 7.0 7.4 7.8 8.2
## [20] 8.6 9.0 9.4 9.8

Apa sih gunanya deret?

Percayalah, suatu saat nanti deret bisa digunakan untuk membantu perhitungan atau analisa kita. Seolah-olah berperan sebagai katalis pada reaksi kimia.

Random sampling dari suatu vector

Ada suatu masa saat kita membutuhkan untuk mengambil sampel (mengambil subset) dari suatu vector secara acak. Kita bisa menggunakan fungsi sample().

Contoh:

Kita memiliki data variabel nama_orang berisi 20 nama orang. Kita hanya ingin memilih 3 nama orang saja secara acak. Bagaimana caranya?

Pertama-tama untuk generating nama orang, saya menggunakan library(randomNames). Pastikan teman-teman telah meng-install library-nya terlebih dahulu ya.

nama_orang = randomNames::randomNames(20)
nama_orang
##  [1] "el-Bacho, Asmaa"                  "Mccabe, Hannah"                  
##  [3] "Fitzgerald Hull, Raina"           "Licano, Edgar"                   
##  [5] "Kieselstein, Marisa"              "Selig, Kelsey"                   
##  [7] "Alcon, Derek"                     "Jefferson, Jonathan"             
##  [9] "Moore, Jason"                     "Rodriguez Rivadeneyra, Alexander"
## [11] "Boykin, Mckayla"                  "Pedersen, Blaine"                
## [13] "Nguyen, Nhi"                      "al-Munir, Turki"                 
## [15] "Hay, Janet"                       "Gilbert, Steven"                 
## [17] "Lanier, Nadia"                    "al-Jabbour, Aayid"               
## [19] "Romero, Sunny"                    "San, Soo"
sample(nama_orang,3,replace = F)
## [1] "Nguyen, Nhi"     "el-Bacho, Asmaa" "Boykin, Mckayla"

replace = F digunakan saat kita tidak ingin ada pemilihan yang berulang. Sedangkan replace = T digunakan saat diperbolehkan hasil pemilihan berulang. Coba run sendiri yah.

Perintah sample() ini akan sangat berguna saat kita hendak menggunakan prinsip simulasi Monte Carlo.

Repeat

Adakalanya kita hendak melakukan pengulangan yang simpel. Instead of using looping, kita bisa menggunakan perintah rep(). Misalkan:

rep('belajar R',3)
## [1] "belajar R" "belajar R" "belajar R"
rep(c(4:8),10)
##  [1] 4 5 6 7 8 4 5 6 7 8 4 5 6 7 8 4 5 6 7 8 4 5 6 7 8 4 5 6 7 8 4 5 6 7 8 4 5 6
## [39] 7 8 4 5 6 7 8 4 5 6 7 8
tinggi_badan = c(120,132,142,90)
rep(mean(tinggi_badan),4)
## [1] 121 121 121 121

Jadi perintah rep() tidak hanya bisa untuk mengulang suatu single variabel atau vector saja tapi bisa digunakan untuk mengulang suatu fungsi.

Apa perbedaan dengan fungsi repeat()? Fungsi repeat() biasanya digunakan dalam looping dan baru akan berhenti saat diberikan perintah break.

Tibble atau Data Frame

Tibble atau data frame adalah struktur data di R berupa tabel. Analogi sederhananya adalah mirip dengan tabel di Ms. Excel files.

Data frame bisa dibentuk dari beberapa vector yang memiliki length() yang sama. Contohnya berikut ini:

Kita akan membuat data frame dari 4 buah vector, yakni: id, nama, dan tinggi_badan.

id = c(1:10)
nama = randomNames::randomNames(10,gender = 0,which.names = 'first')
tinggi_badan = sample(c(150:199),10,replace = F)
absensi = data.frame(id,nama,tinggi_badan)

Hasilnya seperti ini:

absensi
##    id    nama tinggi_badan
## 1   1   Aaron          162
## 2   2   Kevin          165
## 3   3   Colin          157
## 4   4   Jalen          188
## 5   5 Zachary          153
## 6   6  Harley          161
## 7   7  Izaiah          180
## 8   8  Marcus          178
## 9   9  Ubaida          192
## 10 10  Ilheum          150

Bentuk data frame kelak akan menjadi primadona dalam setiap analisa yang digunakan di R. Nanti saat kita belajar data carpentry menggunakan tidyverse, struktur data frame mudah dimanipulasi dengan piping operator: %>%.

Missing values NA

Missing values adalah suatu nilai yang kosong pada suatu data. Kosong berarti tidak berisi data apapun. Bedakan dengan nilai 0 yah!

NA tidak akan diikutsertakan dalam perhitungan sedangkan 0 diikutsertakan.

Di R, nilai NA pada data numerik akan membuat error setiap kali dihitung. Contoh:

data_1 = c(3,5,0,6,8,3)
mean(data_1)
## [1] 4.166667

Berikut adalah contoh saat ada data berisi NA, maka data tersebut tidak akan bisa dihitung:

data_2 = c(3,5,NA,6,8,3)
mean(data_2)
## [1] NA

Bagaimana cara mengecek keberadaan NA di data kita?

Kita bisa menggunakan fungsi is.na(). Output dari fungsi ini adalah boolean variable berupa TRUE atau FALSE.

Contoh: mengecek apakah ada NA di data_2.

is.na(data_2)
## [1] FALSE FALSE  TRUE FALSE FALSE FALSE

Contoh: membuat tabulasi dari function is.na().

table(is.na(data_2))
## 
## FALSE  TRUE 
##     5     1

Contoh: menghitung seberapa banyak yang TRUE.

sum(is.na(data_2))
## [1] 1

Contoh: mengecek apakah ada data yang TIDAK NA di data_2.

!is.na(data_2)
## [1]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE

to be continued

if you find this article helpful, support this blog by clicking the ads.