TUTORIAL R for DATA SCIENCE - part 6: Mulai Bekerja dengan Data
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:
- Menggunakan
:
. - 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 sedangkan0
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.