Hasil Dari Penjumlahan Relasi Logik 2 1 Adalah
Hasil Dari Penjumlahan Relasi Logik 2 1 Adalah
Pada
chapter
ini penulis hendak mengajak pembaca lebih familiar dengan sintaks atau perintah yang ada pada
R
yang akan membantu pembaca untuk melakukan pemrograman pada
R
. Pembaca akan mempelajari penggunaan operator dalam melakukan operasi pengolahan information pada
R
, jenis data yang ada pada
R
, sampai dengan bagaimana kita melakukan proses
decision making
menggunakan
R
.
Daftar Isi
- Operator Aritmatika
- Fungsi Aritmetik
- Operator Relasi
- Operator Logika
- Memasukkan Nilai Kedalam Variabel
- Tipe Data
- Vektor
- Matriks
- Faktor
- Data Frames
- List
- Loop
- Loop Menggunakan Employ Family Role
- Decision Making
- Fungsi
2.1 Operator Aritmatika
Proses perhitungan akan ditangani oleh fungsi khusus.
R
akan memahami urutannya secara benar. Kecuali kita secara eksplisit menetapkan yang lain. Sebagai contoh jalankan sintaks berikut:
2+iv*two
## [1] 10
Bandingkan dengan sintaks berikut:
(2+4)*2
## [i] 12
R
dapat digunakan sebagai kalkulator
Berdasarkan kedua hasil tersebut dapat disimpulkan bahwa ketika kita tidak menetapkan urutan perhitungan menggunakan tanda kurung,
R
akan secara otomatis akan menghitung terlebih dahulu perkalian atau pembangian.
Operator aritmatika yang disediakan
R
adalah sebagai berikut:
Table 1
Operator Aritmatika
R
Simbol | Keterangan |
---|---|
+ | Addition, untuk operasi penjumlahan |
– | Substraction, untuk operasi pengurangan |
* | Multiplication, untuk operasi pembagian |
/ | Division, untuk operasi pembagian |
^ | Eksponentiation, untuk operasi pemangkatan |
%% | Modulus, Untuk mencari sisa pembagian |
%/% | Integer, Untuk mencari bilangan bulat hasil pembagian saja dan tanpa sisa pembagian |
Untuk lebih memahaminya berikut contoh sintaks penerapan operator tersebut.
# Addition 5+three
## [1] 8
# Substraction v-three
## [one] 2
# Multiplication 5*three
## [1] 15
# Division 5/iii
## [i] 1.666667
# Eksponetiation v^iii
## [one] 125
# Modulus 5%%3
## [ane] 2
# Integer 5%/%3
## [1] 1
Note:
Pada
R
tanda
#
berfungsi menambahkan keterangan untuk menjelaskan sebuah sintaks pada
R
.
2.2 Fungsi Aritmetik
Selain fungsi operator aritmetik, pada
R
juga telah tersedia fungsi aritmetik yang lain seperti logaritmik, ekponensial, trigonometri, dll.
- Logaritma dan eksponensial
Untuk contoh fungsi logaritmik dan eksponensial jalankan sintaks berikut:
log2(8) # logaritma basis ii untuk eight
## [ane] 3
log10(8) # logaritma basis x untuk 8
## [one] 0.90309
exp(8) # eksponensial 8
## [i] 2980.958
- Fungsi trigonometri
fungsi trigonometri yang ditampilkan seperti sin,cos, tan, dll.
cos(ten) # cos ten sin(x) # Sin 10 tan(10) # Tan x acos(10) # arc-cos x asin(x) # arc-sin 10 atan(x) #arc-tan 10
Note:
x dalam fungsi trigonometri memiliki satuan radian
Berikut adalah salah satu contoh penggunaannya:
cos(pi)
## [one] -one
- Fungsi matematik lainnya
Fungsi lainnya yang dapat digunakan adalah fungsi absolut, akar kuadrat, dll. Berikut adalah contoh sintaks penggunaan fungsi absolut dan akar kuadrat.
abs(-2) # nilai absolut -2
## [1] 2
sqrt(4) # akar kuadrat iv
## [one] 2
2.3 Operator Relasi
Operator relasi digunakan untuk membandingkan satu objek dengan objek lainnya. Operator yang disediakan
R
disajikan pada Tabular array 2.
Table 2
Operator Relasi
R
Simbol | Keterangan |
---|---|
“>” | Lebih besar dari |
“<” | Lebih Kecil dari |
“==” | Sama dengan |
“>=” | Lebih besar sama dengan |
“<=” | Lebih kecil sama dengan |
“!=” | Tidak sama dengan |
Berikut adalah penerapan operator pada tabel tersebut:
x <- 34 y <- 35 # Operator > x > y
## [1] Fake
# Operator < x < y
## [ane] True
# operator == ten == y
## [1] False
# Operator >= x >= y
## [1] FALSE
# Operator <= x <= y
## [1] TRUE
# Operator != x != y
## [1] TRUE
2.4 Operator Logika
Operator logika hanya berlaku pada vektor dengan tipe logical, numeric, atau circuitous. Semua angka bernilai 1 akan dianggap bernilai logika
TRUE
. Operator logika yang disediakan
R
dapat dilihat pada Table 3.
Table 3
Operator logika
R
Simbol | Keterangan |
---|---|
&& | Operator logika AND |
! | Opeartor logika Not |
& | Operator logika AND element wise |
Operator logika OR element wise |
Penerapannya terdapat pada sintaks berikut:
5 <- c(Truthful,TRUE, FALSE) t <- c(FALSE,Fake,FALSE) # Operator && print(v&&t)
## [1] FALSE
# Operator || print(v||t)
## [1] True
# Operator ! print(!v)
## [1] Simulated FALSE True
# operator & print(v&t)
## [ane] FALSE FALSE Fake
# Operator | impress(5|t)
## [ane] True TRUE Simulated
Note:
operator & dan | akan mengecek logika tiap elemen pada vektor secara berpesangan (sesuai urutan dari kiri ke kanan).
Operator %% dan || hanya mengecek dari kiri ke kanan pada observasi pertama. Misal saat menggunakan && jika observasi pertama Truthful maka observasi pertama pada vektor lainnya akan dicek, namun jika observasi pertama FALSE maka proses akan segera dihentikan dan menghasilkan FALSE.
2.5 Memasukkan Nilai Kedalam Variabel
Variabel pada
R
dapat digunakan untuk menyimpan nilai. Sebagai contoh jalankan sintaks berikut:
# Harga sebuah lemon adalah 500 rupiah lemon <- 500 # Atau 500 -> lemon # dapat juga menggunakan tanda "=" lemon = 500
Note:
R
memungkinkan penggunaan <-,->, atau = sebagai perintah pengisi nilai variabel
R
bersifat
instance-sensitive. Maksudnya adalah variabel Lemon tidak sama dengan lemon (Besar kecil huruf berpengaruh)
Untuk mengetahui nilai dari objek
lemon
kita dapat menggunakan fungsi
print()
atau mengetikkan nama objeknya secara langsung.
# Menggunakan fungsi print() print(lemon)
## [1] 500
# Atau lemon
## [one] 500
R
akan menyimpan variabel
lemon
sebagai objek pada memori. Sehingga kita dapat melakukan operasi terhadap objek tersebut seperti mengalikannya atau menjumlahkannya dengan bilangan lain. Sebagai contoh jalankan sintaks berikut:
# Operasi perkalian terhadap objek lemon five*lemon
## [1] 2500
Kita dapat juga mengubah nilai dari objek
lemon
dengan cara menginput nilai baru terhadap objek yang sama.
R
secara otomatis akan menggatikan nilai sebelumnya. Untuk lebih memahaminya jalankan sintaks berikut:
lemon <- one thousand # Print lemon print(lemon)
## [1] one thousand
Untuk lebih memahaminya berikut adalah sintaks untuk menghitung volume suatu objek.
# Dimensi objek panjang <- ten lebar <- v tinggi <- 5 # Menghitung volume volume <- panjang*lebar*tinggi # Print objek volume impress(book)
## [1] 250
Untuk mengetahui objek apa saja yang telah kita buat sepanjang artikel ini kita dapang menggunakan fungsi
ls()
.
ls()
## [1] "lebar" "lemon" "panjang" "t" "tinggi" "five" "volume" ## [8] "x" "y"
Kumpulan objek yang telah tersimpan dalam memori disebut sebagai
workspace
Untuk menghapus objek pada memori kita dapat menggunakan fungsi
rm()
. Pada sintaks berikut penulis hendak menghapus objek
lemon
dan
book
.
# Menghapus objek lemon dan volume rm(lemon, volume) # Tampilkan kembali objek yang tersisa ls()
## [ane] "lebar" "panjang" "t" "tinggi" "v" "x" "y"
Note:
Setiap variabel atau objek yang dibuat akan menempati sejumlah memori pada komputer sehingga jika kita bekerja dengan jumlah data yang banyak pastikan kita menghapus seluruh objek pada memori sebelum memulai kerja.
2.half dozen Tipe Data
Information pada
R
dapat dikelompokan berdasarkan beberapa tipe. Tipe information pada
R
disajikan pada Table 4.
Tabular array iv
Tipe Data
R
Tipe Data | Contoh | Keterangan |
---|---|---|
Logical | TRUE, Fake | Nilai Boolean |
Numeric | 12.iii, 5, 999 | Segala jenis angka |
Integer | 23L, 97L, 3L | Bilangan integer (bilangan bulat) |
Complex | 2i, 3i, 9i | Bilangan kompleks |
Character | ‘a’, “b”, “123” | Karakter dan string |
Raw | Identik dengan “hullo” | Segala jenis data yang disimpan sebagai raw bytes |
Sintaks berikut adalah contoh dari tipe data pada
R
. Untuk mengetahui tipa information suatu objek kita dapat menggunakan perintah
class()
# Logical apel <- TRUE class(apel)
## [1] "logical"
# Numeric x <- 2.3 class(ten)
## [1] "numeric"
# Integer y <- 2L class(y)
## [i] "integer"
# Compleks z <- 5+2i course(z)
## [1] "circuitous"
# string westward <- "saya" class(west)
## [one] "character"
# Raw xy <- charToRaw("howdy earth") class(xy)
## [i] "raw"
Keenam jenis data tersebut disebut sebagai tipe data atomik. Hal ini disebabkan karena hanya dapat menangani satu tipe data saja. Misalnya hanya numeric atau hanya integer.
Selain menggunakan fungsi
grade()
, kita dapat pula menggunakan fungsi
is_numeric()
,
is.character()
,
is.logical()
, dan sebagainya berdasarkan jenis data apa yang ingin kita cek. Berbeda dengan fungsi
class()
, ouput yang dihasilkan pada fungsi seperti
is_numeric()
adalah nilai Boolean sehingga fungsi ini hanya digunakan untuk mengecek apakah jenis data pada objek sama seperti yang kita pikirkan. Sebagai contoh disajikan pada sintaks berikut:
data <- 25 # Cek apakah objek berisi data numerik is.numeric(data)
## [1] True
# Cek apakah objek adalah karakter is.graphic symbol(data)
## [1] False
Kita juga dapat mengubah jenis data menjadi jenis lainnya seperti integer menjadi numerik atau sebaliknya. Fungsi yang digunakan adalah
as.numeric()
jika ingin mengubah suatu jenis data menjadi numerik. Fungsi lainnya juga dapat digunakan sesuai dengan kita ingin mengubah jenis data objek menjadi jenis data lainnya.
# Integer apel <- 2L # Ubah menjadi numerik equally.numeric(apel)
## [1] 2
# Cek is.numeric(apel)
## [i] True
# Logical nangka <- True # Ubah logical menjadi numeric equally.numeric(nangka)
## [1] 1
# Karakter minum <- "minum" # ubah karakter menjadi numerik every bit.numeric(minum)
## Warning: NAs introduced past coercion
## [1] NA
Note:
Konversi karakter menjadi numerik akan menghasilkan output NA (not bachelor).
R
tidak mengetahui bagaimana cara merubah karakter menjadi bentuk numerik.
Berdasarkan Tabel 2, vektor karakter dapat dibuat menggunakan tanda kurung baik
double quote
(“”) maupun
single quote
(’’).Jika pada teks yang kita tuliskan mengandung
quote
maka kita harus menghentikannya menggunakan tanda ( ). Sbegai contoh kita ingin menuliskan `My friend’s name is “Adi”, pada sintaks akan dituliskan:
'My friend\`south name is "Adi"'
## [1] "My friend`s name is \"Adi\""
# Atau "My friend'south name \"Adi\""
## [ane] "My friend'south name \"Adi\""
Struktur information diklasifikasikan berdasarkan dimensi data dan tie data di dalamnya (homogen atau heterogen). Klasifikasi jenis information disajikan pada Tabel 1.
Dimensi | Homogen | Heterogen |
---|---|---|
1d | Atomik vektor | List |
2d | Matriks | Dataframe |
nd | Array |
Berdasarkan Tabel tersebut dapat kita lihat bahwa objek terbagi atas dua buah struktur data yaitu homogen dan heterogen. Objek dengan struktur data homogen hanya dapat menyimpan satu tipe atau jenis information saja (numerik saja atau cistron saja), sedangkan objek dengan struktur data heterogen akan dapat menyimpan berbagai jenis information.
Berdasarkan daftar yang ada di Tabel 1, kita tidak akan membahas struktur information Array pada buku ini. Struktur information tersebut lebih banyak digunakan untuk kepentingan akademis seperti membuat model matematis yang akan penulis bahas pada buku lain.
2.7 Vektor
Vektor merupakan kombinasi berbagai nilai (numerik, karakter, logical, dan sebagainya berdasarkan jenis input data) pada objek yang sma. Pada contoh kasus berikut, pembaca akan memiliki sesuai jenis data input yaituvektor numerik,
vector karakter,
vektor logical, dll.
2.7.1 Membuat vektor
Vektor dibuat dengan menggunakan fungsi
c()
(concatenate) seperti yang disajikan pada sintaks berikut:
# membuat vektor numerik ten <- c(3,3.5,iv,vii) x # impress vektor
## [one] 3.0 3.5 4.0 7.0
# membuat vektor karakter y <- c("Apel", "Jeruk", "Rambutan", "Salak") y # print vektor
## [1] "Apel" "Jeruk" "Rambutan" "Salak"
# membuat vektor logical t <- c("True", "FALSE", "Truthful") t # print vektor
## [i] "TRUE" "Faux" "True"
selain menginput nilai pada vektor, kita juga dapat memberi nama nilai setiap vektor menggunakan fungsi
names()
.
# Membuat vektor jumlah buah yang dibeli Jumlah <- c(v,five,vi,7) names(Jumlah) <- c("Apel", "Jeruk", "Rambutan", "Salak") # Atau Jumlah <- c(Apel=v, Jeruk=5, Rambutan=vi, Salak=vii) # Print Jumlah
## Apel Jeruk Rambutan Salak ## five 5 half-dozen 7
Notation:
Vektor hanya dapat memuat satu buah jenis data. Vektor hanya dapat mengandung jenis data numerik saja, karakter saja, dll.
Untuk menentukan panjang sebuah vektor kita dapat menggunakan fungsi
lenght()
.
length(Jumlah)
## [1] 4
2.7.2 Missing Values
Seringkali nilai pada vektor kita tidak lengkap atau terdapat nilai yang hilang (missing value) pada vektor.
Missing value
pada
R
dilambangkan oleh
NA
(not available). Berikut adalah contoh vektor dengan
missing value.
Jumlah <- c(Apel=v, Jeruk=NA, Rambutan=6, Salak=7)
Untuk mengecek apakah dalam objek terdapat
missing value
dapat menggunakan fungsi
is.na()
. ouput dari fungsi tersebut adalah nilai Boolean. Jika terdapat
Missing value, maka output yang dihasilkan akan memberikan nilai
TRUE
.
is.na(Jumlah)
## Apel Jeruk Rambutan Salak ## Simulated TRUE FALSE FALSE
Note:
Selain NA terdapat NaN (non a number) sebagai
missing value8. Nilai tersebut muncul ketika fungsi matematika yang digunakan pada proses perhitungan tidak bekerja sebagaimana mestinya. Contoh: 0/0 = NaN
is.na()
juga akan menghasilkan nilai
True
pada NaN. Untuk membedakannya dengan NA dapat digunakan fungsi
is.nan()
.
2.7.three Subset Pada Vektor
Subseting vector
terdiri atas tiga jenis, yaitu:
positive indexing,
Negative Indexing, dan .
- Positive indexing: memilih elemen vektor berdasarkan posisinya (indeks) dalam kurung siku.
# Subset vektor pada urutan kedua Jumlah[2]
## Jeruk ## NA
# Subset vektor pada urutan two dan iv Jumlah[c(2, iv)]
## Jeruk Salak ## NA 7
Selain melalui urutan (indeks), kita juga dapat melakukan subset berdasarkan nama elemen vektornya.
Jumlah["Jeruk"]
## Jeruk ## NA
Note:
Indeks pada
R
dimulai dari i. Sehingga kolom atau elemen pertama vektor dimulai dari [ane]
- Negative indexing: mengecualikan (exclude) elemen vektor.
# mengecualikan elemen vektor two dan 4 Jumlah[-c(2,iv)]
## Apel Rambutan ## 5 6
# mengecualikan elemen vektor 1 sampai 3 Jumlah[-c(1:3)]
## Salak ## 7
- Subset berdasarkan vektor logical: Hanya, elemen-elemen yang nilai yang bersesuaian dalam vektor pemilihan bernilai TRUE, akan disimpan dalam subset.
Annotation:
panjang vektor yang digunakan untuk subset harus sama.
Jumlah <- c(Apel=five, Jeruk=NA, Rambutan=6, Salak=seven) # selecting vector merah <- c(True, False, Truthful, Faux) # Subset Jumlah[merah==Truthful]
## Apel Rambutan ## 5 6
# Subset untuk elemen vektor bukan missing value Jumlah[!is.na(Jumlah)]
## Apel Rambutan Salak ## five 6 seven
ii.vii.iv Perhitungan Menggunakan Vektor
Jika Anda melakukan operasi dengan vektor, operasi akan diterapkan ke setiap elemen vektor. Contoh disediakan pada sintaks di bawah ini:
pendapatan <- c(2000, 1800, 2500, 3000) names(pendapatan) <- c("Andi", "Joni", "Lina", "Rani") pendapatan
## Andi Joni Lina Rani ## 2000 1800 2500 3000
# Kalikan pendapatan dengan iii pendapatan*three
## Andi Joni Lina Rani ## 6000 5400 7500 9000
Seperti yang dapat dilihat,
R
mengalikan setiap elemen dengan bilangan pengali.
Kita juga dapat mengalikan vektor dengan vektor lainnya.Contohnya disajikan pada sintaks berikut:
# membuat vektor dengan panjang sama dengan dengan vektor pendapatan coefs <- c(ii, 1.5, 1, three) # Mengalikan pendapatan dengan vektor coefs pendapatan*coefs
## Andi Joni Lina Rani ## 4000 2700 2500 9000
Berdasarkan sintaks tersebut dapat terlihat bahwa operasi matematik terhadap masing-masing vektor dapat berlangsung jika panjang vektornya sama.
Berikut adalah fungsi lain yang dapat digunakan pada operasi matematika vektor.
max(x) # memperoleh nilai maksimum x min(ten) # memperoleh nilai minimum x range(ten) # memperoleh range vektor x length(10) # memperoleh jumlah elemen vektor 10 sum(x) # memperoleh total penjumlahan elemen vektor 10 prod(10) # memeperoleh produk elemen vektor x mean(x) # memperoleh nilai rata-rata seluruh elemen vektor 10 sd(x) # standar deviasi vektor 10 var(10) # varian vektor x sort(x) # mengurutkan elemen vektor x dari yang terbesar
Contoh penggunaan fungsi tersebut disajikan beberapa pada sintaks berikut:
# Menghitung range pendapatan range(pendapatan)
## [1] 1800 3000
# menghitung rata-rata dan standar deviasi pendapatan mean(pendapatan)
## [1] 2325
sd(pendapatan)
## [1] 537.7422
2.8 Matriks
Matriks seperti Excel sheet yang berisi banyak baris dan kolom (kumpulan bebrapa vektor). Matriks digunakan untuk menggabungkan vektor dengan tipe yang sama, yang bisa berupa numerik, karakter, atau logis. Matriks digunakan untuk menyimpan tabel data dalam R. Baris-baris matriks pada umumnya adalah individu / pengamatan dan kolom adalah variabel.
two.eight.ane Membuat matriks
Untuk membuat matriks kita dapat menggunakan fungsi
cbind()
atau
rbind()
. Berikut adalah contoh sintaks untuk membuat matriks.
# membuat vektor numerik col1 <- c(five, six, 7, 8, ix) col2 <- c(2, 4, v, 9, 8) col3 <- c(7, 3, iv, 8, 7) # menggabungkan vektor berdasarkan kolom my_data <- cbind(col1, col2, col3) my_data
## col1 col2 col3 ## [1,] v 2 seven ## [2,] 6 4 three ## [3,] 7 five 4 ## [4,] 8 ix 8 ## [5,] 9 8 7
# Mengubah atau menambahkan nama baris rownames(my_data) <- c("row1", "row2", "row3", "row4", "row5") my_data
## col1 col2 col3 ## row1 5 2 vii ## row2 6 4 3 ## row3 7 5 4 ## row4 8 ix 8 ## row5 9 8 7
Note:
- cbind(): menggabungkan objek
R
berdasarkan kolom- rbind(): menggabungkan objek
R
berdasarkan baris- rownames(): mengambil atau menetapkan nama-nama baris dari objek seperti-matriks
- colnames(): mengambil atau menetapkan nama-nama kolom dari objek seperti-matriks
Kita dapat melakukan tranpose (merotasi matriks sehingga kolom menjadi baris dan sebaliknya) menggunakan fungsi
t()
. Berikut adalah contoh penerapannya:
t(my_data)
## row1 row2 row3 row4 row5 ## col1 5 half-dozen 7 8 9 ## col2 2 4 5 9 8 ## col3 7 3 4 8 7
Selain melalui pembentukan sejumlah objek vektor, kita juga dapat membuat matriks menggunakan fungsi
matrix()
. Secara sederhana fungsi tersebut dapat dituliskan sebagai berikut:
matrix(information = NA, nrow = 1, ncol = ane, byrow = False, dimnames = Zippo)
Note:
- data: vektor information opsional
- nrow,
ncol: jumlah baris dan kolom yang diinginkan, masing-masing.- byrow: nilai logis. Jika Faux (default) matriks diisi oleh kolom, jika tidak, matriks diisi oleh baris.
- dimnames: Daftar dua vektor yang memberikan nama baris dan kolom masing-masing.
Dalam kode
R
di bawah ini, data input memiliki panjang six. Kita ingin membuat matriks dengan dua kolom. Kita tidak perlu menentukan jumlah baris (di sini
nrow = 3
).
R
akan menyimpulkan ini secara otomatis. Matriks diisi kolom demi kolom saat argumen
byrow = Simulated
. Jika kita ingin mengisi matriks dengan baris, gunakan
byrow = TRUE
. Berikut adalah contoh pembuatan matriks menggunakan fungsi
matrix()
.
information <- matrix( data = c(1,ii,3, 11,12,13), nrow = ii, byrow = Truthful, dimnames = listing(c("row1", "row2"), c("C.ane", "C.ii", "C.3")) ) data
## C.1 C.2 C.3 ## row1 one two three ## row2 11 12 thirteen
Untuk mengetahui dimensi dari suatu matriks, kita dapat menggunakan fungsi
ncol()
untuk mengetahui jumlah kolom matriks dan
nrow()
untuk mengetahui jumlah baris pada matriks. Berikut adalah contoh penerapannya:
# mengetahui jumlah kolom ncol(my_data)
## [1] three
# mengetahui jumlah baris nrow(my_data)
## [ane] 5
Jika ingin memperoleh ringkasan terkait dimensi matriks kita juga dapat mengunakan fungsi
dim()
untuk mengetahui jumlah baris dan kolom matriks. Berikut adalah contoh penerapannya:
dim(my_data) # jumlah baris dan kolom
## [1] 5 3
ii.8.ii Subset Pada Matriks
Sama dengan vektor, subset juga dapat dilakukan pada matriks. Bedanya subset dilakukan berdasarkan baris dan kolom pada matriks.
-
Memilih baris/kolom
berdasarkan pengindeksan positif
baris atau kolom dapat diseleksi menggunakan format
data[row, col]
. Cara selesi ini sama dengan vektor, bedanya kita harus menetukan baris dan kolom dari data yang akan kita pilih. Berikut adalah contoh penerapannya:
# Pilih baris ke-2 my_data[2,]
## col1 col2 col3 ## 6 4 3
# Pilih baris two sampai 4 my_data[2:4,]
## col1 col2 col3 ## row2 vi 4 3 ## row3 7 v 4 ## row4 8 9 viii
# Pilih baris 2 dan 4 my_data[c(2,iv),]
## col1 col2 col3 ## row2 6 4 iii ## row4 eight 9 eight
# Pilih baris 2 dan kolom 3 my_data[2, iii]
## [one] 3
- Pilih berdasarkan nama baris/kolom
Berikut adalah contoh subset berdasarkan nama baris atau kolom.
# Pilih baris 1 dan kolom three my_data["row1","col3"]
## [1] 7
# Pilih baris 1 sampai 4 dan kolom iii baris <- c("row1","row2","row3") my_data[baris, "col3"]
## row1 row2 row3 ## seven iii four
-
Kecualikan baris/kolom
dengan pengindeksan negatif
Sama seperti vektor pengecualian data dapat dilakukan di matriks menggunakan pengindeksan negatif. Berikut cara melakukannya:
# Kecualikan baris 2 dan 3 serta kolom three my_data[-c(ii,3), -3]
## col1 col2 ## row1 5 2 ## row4 8 9 ## row5 ix 8
- Pilihan dengan logik
Dalam kode
R
di bawah ini, misalkan kita ingin hanya menyimpan baris di mana col3> = 4:
col3 <- my_data[, "col3"] my_data[col3 >= 4, ]
## col1 col2 col3 ## row1 5 2 7 ## row3 7 five four ## row4 eight 9 8 ## row5 9 8 7
2.8.3 Perhitungan Menggunakan Matriks
_ Kita juga dapat melakukan operasi matematika pada matriks. Pada operasi matematika pada matriks proses yang terjadi bisa lebih kompleks dibanding pada vektor, dimana kita dapat melakukan operasi untuk memperoleh gambaran data pada tiap kolom atau baris.
Berikut adalah contoh operasi matematika sederhana pada matriks:
# mengalikan masing-masing elemen matriks dengan ii my_data*2
## col1 col2 col3 ## row1 x 4 14 ## row2 12 8 half dozen ## row3 xiv 10 8 ## row4 16 eighteen 16 ## row5 18 16 14
# memperoleh nilai log basis 2 pada masing-masing elemen matriks log2(my_data)
## col1 col2 col3 ## row1 two.321928 i.000000 2.807355 ## row2 ii.584963 2.000000 one.584963 ## row3 2.807355 two.321928 2.000000 ## row4 3.000000 3.169925 3.000000 ## row5 3.169925 3.000000 ii.807355
Seperti yang telah penulis jelaskan sebelumnya, kita juga dapat melakukan operasi matematika untuk memperoleh hasil penjumlahan elemen pada tiap baris atau kolom dengan menggunakan fungsi
rowSums()
untuk baris dan
colSums()
untuk kolom.
# Full pada tiap kolom colSums(my_data)
## col1 col2 col3 ## 35 28 29
# Total pada tiap baris rowSums(my_data)
## row1 row2 row3 row4 row5 ## 14 xiii 16 25 24
Jika kita tertarik untuk mencari nilai rata-rata tiap baris arau kolom kita juga dapat menggunakan fungsi
rowMeans()
atau
colMeans()
. Berikut adalah contoh penerapannya:
# Rata-rata tiap baris rowMeans(my_data)
## row1 row2 row3 row4 row5 ## four.666667 4.333333 5.333333 8.333333 8.000000
# Rata-rata tiap kolom colMeans(my_data)
## col1 col2 col3 ## 7.0 5.6 5.8
Kita juga dapat melakukan perhitungan statistika lainnya menggunakan fungsi
apply()
. Berikut adalah format sederhananya:
utilise(x, MARGIN, FUN)
Note:
- ten : data matriks
- MARGIN : Nilai yang dapat digunakan adalah one (untuk operasi pada baris) dan two (untuk operasi pada kolom)
- FUN : fungsi yang diterapkan pada baris atau kolom
untuk mengetahui fungsi (FUN
) apa saja yang dapat diterapkan pada fungsi
apply()
jalankan sintaks bantuan berikut:
assist(employ)
Berikut adalah contoh penerapannya:
# Rata-rata pada tiap baris utilize(my_data, one, hateful)
## row1 row2 row3 row4 row5 ## 4.666667 4.333333 five.333333 8.333333 8.000000
# Median pada tiap kolom apply(my_data, ii, median)
## col1 col2 col3 ## 7 5 vii
2.9 Faktor
Dalam bahasa
R
, faktor merupakan verktor dengan level. Level disimpan sebagai
R
Graphic symbol. Jika kita menggunakan SPSS maka factor ini akan sama dengan jenis information numerik atau ordinal.
Faktor merepresentasikan kategori atau grup pada data. Untuk membuat faktor pada
R
, kita dapat menggunakan fungsi
gene()
.
two.9.ane Membuat Variabel Faktor
Berikut adalah contoh sintaks pembuatan variabel faktor.
# membuat variabel faktor faktor <- factor(c(1,2,1,2)) faktor
## [1] 1 two 1 2 ## Levels: ane 2
Pada sintaks tersebut objek faktor terdiri atas dua buah kategori atau pada
R
disebut sebagai
factor levels. Kita dapat mengecek gene levels menggunakan fungsi
levels()
.
levels(faktor)
## [ane] "1" "2"
Kita juga dapat memberikan label atau mengubah level pada faktor. Berikut adalah contoh bagaimana kita melakukannya:
# Ubah level levels(faktor) <- c("baik","tidak_baik") faktor
## [1] baik tidak_baik baik tidak_baik ## Levels: baik tidak_baik
# Ubah urutan level faktor <- factor(faktor, levels = c("tidak_baik","baik")) faktor
## [one] baik tidak_baik baik tidak_baik ## Levels: tidak_baik baik
Note:
- Fungsi
is.factor()
dapat digunakan untuk mengecek apakah sebuah variabel adalah faktor. Hasil yang dimunculkan dapat berupa TRUE (jika faktor) atau FALSE (jika bukan)- Fungsi
equally.factor()
dapat digunakan untuk merubah sebuah variabel menjadi faktor.
# Cek jika objek faktor adalah faktor is.factor(faktor)
## [i] TRUE
# Cek jika objek Jumlah adalah faktor is.factor(Jumlah)
## [one] FALSE
# Ubah objek Jumlah menjadi faktor as.factor(Jumlah)
## Apel Jeruk Rambutan Salak ## v <NA> 6 seven ## Levels: 5 half dozen seven
2.9.2 Perhitungan Menggunakan Faktor
Jika kita ingin mengetahui jumlah masing-masing observasi pada masing-masing faktor, kita dapat menggunakan fungsi
summary()
. Berikut adalah contoh penerapannya:
summary(faktor)
## tidak_baik baik ## 2 ii
Pada contoh perhitungan menggunakan vektor kita telah membuat objek
pendapatan
. Pada objek tersebut kita ingin menghitung nilai rata-rata pendapatan berdasarkan objek faktor. Untuk melakukannya kita dapat menggunakan fungsi
tapply()
.
pendapatan
## Andi Joni Lina Rani ## 2000 1800 2500 3000
faktor
## [ane] baik tidak_baik baik tidak_baik ## Levels: tidak_baik baik
# Rata-rata pendapatan dan simpan sebagai objek dengan nama: # mean_pendapatan mean_pendapatan <- tapply(pendapatan, faktor, mean) mean_pendapatan
## tidak_baik baik ## 2400 2250
# Hitung ukuran/panjang masing-masing grup tapply(pendapatan, faktor, length)
## tidak_baik baik ## two ii
Untuk mengetahui jumlah masing-masing observasi masing-masing gene levels kita juga dapat menggunakan fungsi
table()
. Fungsi tersebut akan membuat frekuensi tabel pada masing-masing factor levels atau yang dikenal sebagai
contingency table.
table(faktor)
## faktor ## tidak_baik baik ## two 2
# Cantankerous-tabulation antara # faktor dan pendapatan tabular array(pendapatan, faktor)
## faktor ## pendapatan tidak_baik baik ## 1800 ane 0 ## 2000 0 1 ## 2500 0 1 ## 3000 i 0
2.ten Data Frames
Data frame merupakan kumpulan vektor dengan panjang sama atau dapat pula dikatan sebagai matriks yang memiliki kolom dengan jenis data yang berbeda-beda (numerik, karakter, logical). Pada data frame terdapat baris dan kolom. Baris disebut sebagai observasi, sedangkan kolom disebut sebagai variabel. Sehingga dapat dikatakan bahwa setiap observasi akan memiliki satu atau beberapa variabel.
2.10.1 Membuat Data Frame
Information frame dapat dibuat menggunakan fungsi
data.frame()
. Berikut adalah contoh cara membuat information frame:
# Membuat data frame nama <- c("Andi","Rizal","Ani","Ina") pendapatan <- c(chiliad, 2000, 3500, 500) tinggi <- c(160, 155, 170, 146) usia <- c(35, 40, 25, 27) menikah <- c(TRUE, Fake, TRUE, TRUE) data_teman <- information.frame(nama = nama, gaji = pendapatan, tinggi = tinggi, menikah = menikah) data_teman
## nama gaji tinggi menikah ## 1 Andi 1000 160 True ## two Rizal 2000 155 FALSE ## 3 Ani 3500 170 True ## 4 Ina 500 146 TRUE
Untuk mengecek apakah objek
data_teman
merupakan data frame, kita dapat menggunakan fungsi
is.data.frame()
. Jika hasilnya True, maka objek tersebut adalah data frame. Berikut adalah contoh penerapannya:
is.data.frame(data_teman)
## [1] TRUE
Annotation:
untuk konversi objek menjadi information frame, kita dapat menjalankan fungsi
every bit.data.frame()
.
two.10.2 Subset Pada Information Frame
Subset pada data frame sebenarnya tidak berbeda dengan subset pada matriks. Bedanya adalah kita juga bisa melakukan subset langsung terhadap nama variabel menggunakan dollar sign. Untuk lebih memahaminya berikut adalah jenis subset pada data frame.
-
Pengindeksan positif
menggunakan nama dan lokasi.
# Subset menggunakan dollar sign data_teman$nama
## [one] Andi Rizal Ani Ina ## Levels: Andi Ani Ina Rizal
# atau data_teman[, "nama"]
## [one] Andi Rizal Ani Ina ## Levels: Andi Ani Ina Rizal
# subset baris one sampai 3 serta kolom 1 dan 3 data_teman[one:three, c(1,iii)]
## nama tinggi ## 1 Andi 160 ## ii Rizal 155 ## 3 Ani 170
- Pengindeksan negatif
# Kecualikan kolom nama data_teman[,-1]
## gaji tinggi menikah ## 1 thou 160 True ## 2 2000 155 Imitation ## 3 3500 170 TRUE ## 4 500 146 TRUE
- Pengideksan berdasarkan karakteristik
Kita ingin memilih data dengan kriteria teman yang telah menikah
data_teman[data_teman$menikah==True, ]
## nama gaji tinggi menikah ## 1 Andi k 160 TRUE ## iii Ani 3500 170 Truthful ## 4 Ina 500 146 TRUE
# Tampilkan hanya kolom nama dan gaji untuk yang telah menikah data_teman[data_teman$menikah==Truthful, one:2]
## nama gaji ## 1 Andi 1000 ## three Ani 3500 ## 4 Ina 500
kita juga dapat menggunakan fungsi
subset()
agar lebih mudah. Berikut adalah contoh penerapannya:
# subset terhadap teman yang berusia >=30 tahun subset(data_teman, usia>=30)
## nama gaji tinggi menikah ## 1 Andi 1000 160 True ## two Rizal 2000 155 FALSE
Opsi lain adalah menggunakan fungsi
attach()
dan
detach()
. Fungsi
attach()
mengambil information frame dan membuat kolomnya dapat diakses hanya dengan memberikan nama mereka.
# attach data frame attach(data_teman)
## The following objects are masked _by_ .GlobalEnv: ## ## menikah, nama, tinggi
# ==== memulai data manipulation ==== data_teman[usia>=thirty]
## nama gaji ## 1 Andi thousand ## two Rizal 2000 ## 3 Ani 3500 ## 4 Ina 500
# ==== mengakhiri data manipulation ==== # detach data frame detach(data_teman)
2.10.3 Memperluas Data Frame
Kita dapat juga memperluas data frame dengan cara menambahkan variabel atau kolombaru pada information frame. Pada contoh kali ini penulis akan menambahkan kolom pendidikan terakhir pada objek
data_teman
. Berikut adalah sintaks yang digunakan.
# membuat vektor pendidikan pendidikan <- c("S1","S2","D3","D1") # menambahkan variabel pendidikan pada data frame data_teman$pendidikan <- pendidikan
# atau cbind(data_teman, pendidikan=pendidikan)
2.x.four Perhitungan Pada Information Frame
Perhitungan pada variabel numerik data frame pada dasarnya sama dengan perhitungan pada matriks. kita dapat menggunakan fungsi
rowSums()
,
colSums()
,
rowMeans()
dan
apply()
. Proses perhitungan dan manipulasi pada data frame akan dibahas pada sesi yang lain secara lebih item.
2.11 List
List adalah kumpulan objek yang diurutkan, yang dapat berupa vektor, matriks, information frame, dll. Dengan kata lain, daftar dapat berisi semua jenis objek
R
.
2.11.1 Membuat List
List dapat dibuat menggunakan fungsi
listing()
. Berikut disajikan contoh sebuah list sebuah keluarga:
# Membuat list keluarga keluarga <- list( ayah = "Budi", usia_ayah = 48, ibu = "Ani", usia_ibu = "47", anak = c("Andi", "Adi"), usia_anak = c(fifteen,10) ) # Print keluarga
## $ayah ## [1] "Budi" ## ## $usia_ayah ## [i] 48 ## ## $ibu ## [1] "Ani" ## ## $usia_ibu ## [1] "47" ## ## $anak ## [1] "Andi" "Adi" ## ## $usia_anak ## [1] 15 10
# Nama elemen dalam list names(keluarga)
## [i] "ayah" "usia_ayah" "ibu" "usia_ibu" "anak" "usia_anak"
# Jumlah elemen pada listing length(keluarga)
## [1] 6
2.11.2 Subset List
Kita dapat memilih sebuah elemen pada listing dengan menggunakan nama elemen atau indeks dari elemen tersebut. Berikut adalah contoh penerapannya:
# Subset berdasarkan nama # mengambil elemen usia_ayah keluarga$usia_ayah
## [1] 48
# Atau keluarga[["usia_ayah"]]
## [1] 48
# Subset berdasarkan indeks keluarga[[2]]
## [i] 48
# subset elemen pertama pada keluarga[[5]] keluarga[[five]][1]
## [1] "Andi"
2.11.iii Memperluas List
Kita juga dapat menambahkan elemen pada list yang telah kita buat. Pada contoh listing sebelumnya penulis akan menambahkan elemen keluarga yang lain seperti berikut:
# Menambahkan kakek dan nenek pada list keluarga$kakek <- "Suprapto" keluarga$nenek <- "Sri" # Print keluarga
## $ayah ## [i] "Budi" ## ## $usia_ayah ## [1] 48 ## ## $ibu ## [1] "Ani" ## ## $usia_ibu ## [1] "47" ## ## $anak ## [1] "Andi" "Adi" ## ## $usia_anak ## [1] 15 10 ## ## $kakek ## [1] "Suprapto" ## ## $nenek ## [1] "Sri"
Kita juga dapat menggabungkan beberapa list menjadi satu. Berikut adalah format sederhana bagaimana cara menggabungkan beberapa list menjadi satu:
list_baru <- c(list_a, list_b, list_c, ...)
2.12 Loop
Loop
merupakan kode program yang berulang-ulang.
Loop
berguna saat kita ingin melakukan sebuah perintah yang perlu dijalankan berulang-ulang seperti melakukan perhitungan maupaun melakukan visualisasi terhadap banyak variabel secara serentak. Hal ini tentu saja membantu kita karena kita tidak perlu menulis sejumlah sintaks yang berulang-ulang. Kita hanya perlu mengatur
statement
berdasarkan hasil yang kita harapkan.
Pada
R
bentuk
loop
dapat bermacam-macam (“for loop”,“while loop”, dll).
R
menyederhanakan bentuk
loop
ini dengan menyediakan sejumlah fungsi seperti
apply()
,tapply()
, dll. Sehingga
loop
jarang sekali muncul dalam kode
R
. Sehingga
R
sering disebut sebagai
loopless loop.
Meski
loop
jarang muncul bukan berarti kita tidak akan melakukannya. Terkadang saat kita melakukan komputasi statistik atau matematik dan belum terdapat paket yang mendukung proses tersebut, sering kali kita akan membuat sintaks sendiri berdasarkan algoritma metode tersebut. Pada algoritma tersebut sering pula terdapat
loop
yang diperlukan selama proses perhitungan. Secara sederhana diagram umum loop ditampilkan pada Effigy 1
## Alarm: bundle 'knitr' was congenital under R version 3.5.3
Figure 1: Diagram umum loop (sumber: Primartha, 2018).
ii.12.1 For Loop
Mengulangi sebuah
statement
atau sekelompok
statement
sebanyak nilai yang ditentukan di awal. Jadi operasi akan terus dilakukan sampai dengan jumlah yang telah ditetapkan di awal atau dengan kata lain tes kondisi (Jika jumlah pengulangan telah cukup) hanya akan dilakukan di akhir. Secara sederhana bentuk dari
for loop
dapat dituliskan sebagai berikut:
for (value in vector){ statements }
Berikut adalah contoh sintaks penerapan
for loop:
# Membuat vektor numerik vektor <- c(i:v) # loop for(i in vektor){ print(i) }
## [1] 1 ## [1] 2 ## [1] three ## [1] iv ## [1] five
Loop
akan dimulai dari blok
statement for
sampai dengan
print(i)
. Berdasarkan
loop
pada contoh tersebut,
loop
hanya dilakukan sebanyak v kali sesuai dengan jumlah vektor yang ada.
2.12.2 While Loop
While loop
merupakan loop yang digunakan ketika kita telah menetapkan
finish status
sebelumnya. Blok
argument/kode yang sama akan terus dijalankan sampai
stop condition
ini tercapai.
Stop condition
akan di cek sebelum melakukan proses
loop. Berikut adalah pola dari
while loop
dapat dituliskan sebagai berikut:
while (test_expression){ statement }
Berikut adalah contoh penerapan dari
while loop:
coba <- c("Contoh") counter <- 1 # loop while (counter<5){ # print vektor print(coba) # tambahkan nilai counter sehingga proses terus berlangsung sampai counter = 5 counter <- counter + 1 }
## [1] "Contoh" ## [one] "Contoh" ## [1] "Contoh" ## [1] "Contoh"
Loop
akan dimulai dari blok
statement while
sampai dengan
counter
<- ane.
Loop
hanya akan dilakukan sepanjang nilai
counter
< v.
ii.12.three Repeat Loop
Repeat loop
akan menjalankan
statement/kode yang sama berulang-ulang hingga
stop condition
tercapai. Berikut adalah pola dari
repeat loop.
repeat { commands if(status){ pause } }
Berikut adalah contoh penerapan dari
echo loop:
coba <- c("contoh") counter <- 1 repeat { print(coba) counter <- counter + 1 if(counter < v){ interruption } }
## [one] "contoh"
Loop
akan dimulai dari blok
statement while
sampai dengan
break.
Loop
hanya akan dilakukan sepanjang nilai
counter
< v. Hasil yang diperoleh berbeda dengan
while loop, dimana kita memperoleh iv buah kata “contoh”. Hal ini disebabkan karena
repeat loop
melakukan pengecekan
finish condition
tidak di awal loop seperti
while loop
sehingga berapapun nilainya, selama nilainya sesuai dengan
finish status
maka
loop
akan dihentikan. Hal ini berbeda dengan
while loop
dimana proses dilakukan berulang-ulang sampai jumlahnya mendekati
stop condition.
two.12.4 Break
Break
sebenarnya bukan bagian dari
loop, namun sering digunakan dalam
loop.
Break
dapat digunakan pada
loop
manakala dirasa perlu, yaitu saat kondisi yang disyaratkan pada
break
tercapai.
Berikut adalah contoh penerapan
break
pada beberapa jenis
loop.
# for loop a = c(2,four,6,8,x,12,14) for(i in a){ if(i>viii){ break } print(i) }
## [ane] 2 ## [1] iv ## [1] 6 ## [1] 8
# while loop a = 2 b = 4 while(a<seven){ print(a) a = a +1 if(b+a>x){ break } }
## [1] 2 ## [i] 3 ## [i] 4 ## [1] 5 ## [i] half dozen
# repeat loop a = 1 repeat{ print(a) a = a+one if(a>6){ pause } }
## [1] 1 ## [one] 2 ## [ane] iii ## [1] four ## [i] five ## [1] 6
2.thirteen Loop Menggunakan Apply Family Function
Penggunaan loop sangat membantu kita dalam melakukan proses perhitungan berulang. Namun, metode ini tidak cukup ringkas dalam penerapannya dan perlu penulisan sintaks yang cukup panjang untuk menyelesaikan sebuah kasus yang kita inginkan. Berikut adalah sebuah sintaks yang digunakan untuk menghitung nilai hateful pada suatu dataset:
# subset data iris sub_iris <- iris[,-5] # membuat vektor untuk menyimpan hasil loop a <- rep(NA,4) # loop for(i in 1:length(sub_iris)){ a[i]<-hateful(sub_iris[,i]) } # print a
## [1] 5.843333 three.057333 iii.758000 1.199333
grade(a) # cek kelas objek
## [i] "numeric"
Metode alternatif lain untuk melakukan loop suatu fungsi adalah dengan menggunakan Use function family. Metode ini memungkinkan kita untuk melakukan loop suatu fungsi tanpa perlu menuliskan sintaks loop. Berikut adalah beberapa fungsi dari employ family unit yang nantinya akan sering kita gunakan:
-
apply()
: fungsi generik yang mengaplikasikan fungsi kepada kolom atau baris pada matriks atau secara lebih full general aplikasi dilakukan pada dimensi untuk jenis data assortment. -
lapply()
: fungsi employ yang bekerja pada jenis data list dan memberikan output berupa list juga. -
sapply()
: bentuk sederhana dari lapply yang menghasilkan output berupa matriks atau vektor. -
vapply()
: disebut juga
verified apply
(memungkinkan untuk menghasilkan output dengan jenis data yang telah ditentukan sebelumnya). -
tapply()
:
tagged apply
dimana dimana tag menentukan subset dari data.
ii.13.i Apply
Fungsi
apply()
bekerja dengan jenis data matrik atau array (jenis data homogen). Kita dapat melakukan spesifikasi apakah suatu fungsi hanya akan bekerja pada kolom saja, baris saja atau keduanya. Format fungsi ini adalah sebagai berikut:
apply(X, MARGIN, FUN, ...)
Note:
- 10: matriks atau assortment
- MARGIN: menentukan bagaimana fungsi bekerja terhadap matriks atau array. Jika nilai yang diinputkan i, maka fungsi akan bekerja pada masing-masing baris pada matriks. Jika nilainya 2, maka fungsi akan bekerja pada tiap kolom pada matriks.
- FUN: fungsi yang akan digunakan. Fungsi yang dapat digunakan dapat berupa fungsi dasar matematika atau statistika, serta user define function.
- …: opsional argumen pada fungsi yang digunakan.
Berikut adalah contoh bagaimana aplikasi fungsi tersebut pada matriks:
## membuat matriks 10 <- cbind(x1 = 3, x2 = c(4:i, 2:5)) x # impress
## x1 x2 ## [1,] 3 iv ## [2,] iii iii ## [3,] 3 ii ## [iv,] 3 one ## [5,] iii two ## [6,] 3 3 ## [7,] iii 4 ## [eight,] 3 v
course(x) # cek kelas objek
## [ane] "matrix"
## menghitung mean masing-masing kolom apply(x, MARGIN=2 ,FUN=mean, trim=0.ii, na.rm=True)
## x1 x2 ## 3 3
## menghitung range nilai pada masing-masing baris ## menggunakan user define role utilize(x, MARGIN=one, FUN=function(x){ max(x)-min(x) })
## [1] ane 0 one 2 one 0 1 two
ii.xiii.two lapply
Fungsi ini melakukan loop fungsi terhadap input information berupa list. Output yang dihasilkan juga merupakan list dengan panjang listing yang sama dengan yang diinputkan. Format yang digunakan adalah sebagai berikut:
lapply(X, FUN, ...)
Notation:
- X: vektor, data frame atau list
- FUN: fungsi yang akan digunakan. Fungsi yang dapat digunakan dapat berupa fungsi dasar matematika atau statistika, serta user define function. Subset juga dimungkinkan pada fungsi ini.
- …: opsional argumen pada fungsi yang digunakan.
Berikut adalah contoh penerapan fungsi lapply:
## Membuat list x <- list(a = 1:10, beta = exp(-3:3), logic = c(True,Simulated,FALSE,TRUE)) x # print
## $a ## [1] 1 2 3 four 5 6 7 8 9 ten ## ## $beta ## [1] 0.04978707 0.13533528 0.36787944 1.00000000 2.71828183 7.38905610 ## [7] 20.08553692 ## ## $logic ## [1] TRUE False FALSE True
class(x) # cek kelas objek
## [ane] "list"
## Menghitung nilai mean pada masing-masing baris lits lapply(x, FUN=hateful)
## $a ## [1] v.5 ## ## $beta ## [1] 4.535125 ## ## $logic ## [1] 0.5
## Menghitung mean tiap kolom dataset iris lapply(iris, FUN=mean)
## Warning in mean.default(10[[i]], ...): statement is not numeric or logical: ## returning NA
## $Sepal.Length ## [1] 5.843333 ## ## $Sepal.Width ## [one] 3.057333 ## ## $Petal.Length ## [1] 3.758 ## ## $Petal.Width ## [1] one.199333 ## ## $Species ## [one] NA
## Mengalikan elemen vektor dengan suatu nilai y <- c(1:5) lapply(y, FUN=office(10){x*5})
## [[1]] ## [1] five ## ## [[2]] ## [1] 10 ## ## [[3]] ## [ane] fifteen ## ## [[4]] ## [1] twenty ## ## [[five]] ## [1] 25
## Mengubah output menjadi vektor unlist(lapply(y, FUN=function(10){x*5}))
## [1] 5 10 15 20 25
2.xiii.iii sapply
Fungsi
sapply()
merupakan bentuk lain dari fungsi
lapply()
. Perbedaanya terletak pada output default yang dihasilkan. Secara default
sapply()
menerima input utama berupa list (dapat pula dataframe atau vektor), namun tidak seperti
lapply()
jenis information output yang dihasilkan adalah vektor. Untuk mengubah output menjadi listing perlu argumen tambahan berupa
simplify=Fake
. Format fungsi tersebut adalah sebagai berikut:
sapply(Ten, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
Note:
- X: vektor, data frame atau list
- FUN: fungsi yang akan digunakan. Fungsi yang dapat digunakan dapat berupa fungsi dasar matematika atau statistika, serta user define part. Subset juga dimungkinkan pada fungsi ini.
- …: opsional argumen pada fungsi yang digunakan.
- simplify: logical. Jika nilainya
Truthful
maka output yang dihasilkan adalah bentuk sederhana dari vektor, matrix atau assortment.- USE.NAMES: jika listing memiliki nama pada setiap elemennya, maka nama elemen tersebut akan secara default ditampilkan.
Berikut adalah contoh penerapannya:
## membuat listing ten <- list(a = one:10, beta = exp(-3:3), logic = c(Truthful,FALSE,Imitation,True)) ## menghitung nilai mean setiap elemen sapply(10, FUN=hateful)
## a beta logic ## 5.500000 4.535125 0.500000
## menghitung nilai mean dengan output listing sapply(x, FUN=mean, simplify=Imitation)
## $a ## [1] v.5 ## ## $beta ## [1] 4.535125 ## ## $logic ## [1] 0.5
## summary objek dataframe sapply(mtcars, FUN=summary)
## mpg cyl disp hp drat wt qsec vs ## Min. 10.40000 4.0000 71.1000 52.0000 2.760000 1.51300 14.50000 0.0000 ## 1st Qu. 15.42500 four.0000 120.8250 96.5000 3.080000 2.58125 16.89250 0.0000 ## Median nineteen.20000 6.0000 196.3000 123.0000 3.695000 3.32500 17.71000 0.0000 ## Mean xx.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375 ## 3rd Qu. 22.80000 eight.0000 326.0000 180.0000 iii.920000 3.61000 18.90000 1.0000 ## Max. 33.90000 8.0000 472.0000 335.0000 4.930000 five.42400 22.90000 ane.0000 ## am gear carb ## Min. 0.00000 3.0000 i.0000 ## 1st Qu. 0.00000 3.0000 two.0000 ## Median 0.00000 4.0000 2.0000 ## Mean 0.40625 3.6875 ii.8125 ## third Qu. one.00000 4.0000 4.0000 ## Max. 1.00000 v.0000 8.0000
## summary objek list a <- list(mobil=mtcars, anggrek=iris) sapply(a, FUN=summary)
## $mobil ## mpg cyl disp hp ## Min. :10.twoscore Min. :4.000 Min. : 71.i Min. : 52.0 ## 1st Qu.:fifteen.43 1st Qu.:four.000 1st Qu.:120.eight 1st Qu.: 96.5 ## Median :xix.20 Median :six.000 Median :196.3 Median :123.0 ## Hateful :twenty.09 Mean :half dozen.188 Mean :230.7 Hateful :146.seven ## 3rd Qu.:22.80 3rd Qu.:8.000 third Qu.:326.0 3rd Qu.:180.0 ## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0 ## drat wt qsec vs ## Min. :2.760 Min. :1.513 Min. :fourteen.fifty Min. :0.0000 ## 1st Qu.:three.080 1st Qu.:2.581 1st Qu.:sixteen.89 1st Qu.:0.0000 ## Median :three.695 Median :iii.325 Median :17.71 Median :0.0000 ## Hateful :3.597 Hateful :three.217 Hateful :17.85 Mean :0.4375 ## third Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.xc 3rd Qu.:ane.0000 ## Max. :iv.930 Max. :5.424 Max. :22.ninety Max. :1.0000 ## am gear carb ## Min. :0.0000 Min. :iii.000 Min. :1.000 ## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:two.000 ## Median :0.0000 Median :4.000 Median :2.000 ## Hateful :0.4062 Mean :three.688 Mean :2.812 ## 3rd Qu.:i.0000 tertiary Qu.:four.000 3rd Qu.:four.000 ## Max. :i.0000 Max. :five.000 Max. :eight.000 ## ## $anggrek ## Sepal.Length Sepal.Width Petal.Length Petal.Width ## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 ## 1st Qu.:five.100 1st Qu.:2.800 1st Qu.:i.600 1st Qu.:0.300 ## Median :v.800 Median :iii.000 Median :4.350 Median :1.300 ## Mean :5.843 Hateful :iii.057 Mean :3.758 Mean :one.199 ## tertiary Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 ## Max. :7.900 Max. :4.400 Max. :6.900 Max. :two.500 ## Species ## setosa :50 ## versicolor:50 ## virginica :50 ## ## ##
2.13.iv vapply
Funsgi ini merupakan bentuk lain dari
sapply()
. Bedanya secara kecepatan proses fungsi ini lebih cepat dari
sapply()
. Hal yang menarik dari fungsi ini kita dapat menambahkan argumen
FUN.VALUE
. pada argumen ini kita memasukkan vektor berupa output fungsi yang diinginkan. Perbedaan lainnya adalah output yang dihasilkan hanya berupa matriks atau array. Format dari fungsi ini adalah sebagai berikut:
vapply(X, FUN, FUN.VALUE, ..., Apply.NAMES = TRUE)
Annotation:
- X: vektor, data frame atau list
- FUN: fungsi yang akan digunakan. Fungsi yang dapat digunakan dapat berupa fungsi dasar matematika atau statistika, serta user define function. Subset juga dimungkinkan pada fungsi ini.
- FUN.VALUE: vektor, template dari render value FUN.
- …: opsional argumen pada fungsi yang digunakan.
- Use.NAMES: jika list memiliki nama pada setiap elemennya, maka nama elemen tersebut akan secara default ditampilkan.
Berikut adalah contoh penerapannya:
## membuat list 10 <- sapply(3:9, seq) x # print
## [[i]] ## [1] 1 2 3 ## ## [[2]] ## [1] 1 2 3 4 ## ## [[3]] ## [1] 1 two iii 4 five ## ## [[4]] ## [1] i two three 4 five 6 ## ## [[5]] ## [1] ane two 3 4 5 6 7 ## ## [[6]] ## [1] 1 ii iii 4 5 6 seven 8 ## ## [[7]] ## [1] ane 2 3 4 5 6 7 8 ix
## membuat ringkasan data pada tiap elemen list vapply(x, fivenum, c(Min. = 0, "1st Qu." = 0, Median = 0, "3rd Qu." = 0, Max. = 0))
## [,1] [,two] [,three] [,4] [,v] [,half-dozen] [,7] ## Min. ane.0 1.0 1 one.0 one.0 ane.0 one ## 1st Qu. 1.v 1.5 ii 2.0 2.5 2.5 3 ## Median 2.0 2.5 iii 3.5 iv.0 4.5 v ## 3rd Qu. two.5 3.5 4 5.0 5.five vi.5 7 ## Max. 3.0 4.0 v 6.0 7.0 8.0 nine
## membuat ringkasan data pada tiap kolom dataframe vapply(mtcars, summary, c(Min. = 0, "1st Qu." = 0, Median = 0, "third Qu." = 0, Max. = 0, Hateful=0))
## mpg cyl disp hp drat wt qsec vs ## Min. 10.40000 4.0000 71.1000 52.0000 two.760000 1.51300 14.50000 0.0000 ## 1st Qu. fifteen.42500 4.0000 120.8250 96.5000 3.080000 2.58125 16.89250 0.0000 ## Median 19.20000 six.0000 196.3000 123.0000 iii.695000 iii.32500 17.71000 0.0000 ## 3rd Qu. 20.09062 6.1875 230.7219 146.6875 3.596563 iii.21725 17.84875 0.4375 ## Max. 22.80000 viii.0000 326.0000 180.0000 iii.920000 3.61000 18.90000 one.0000 ## Mean 33.90000 eight.0000 472.0000 335.0000 4.930000 5.42400 22.90000 1.0000 ## am gear carb ## Min. 0.00000 3.0000 1.0000 ## 1st Qu. 0.00000 three.0000 ii.0000 ## Median 0.00000 4.0000 2.0000 ## 3rd Qu. 0.40625 three.6875 two.8125 ## Max. 1.00000 4.0000 4.0000 ## Mean 1.00000 5.0000 8.0000
two.13.v tapply
Fungsi ini sangat berguna jika pembaca ingin menghitung suatu nilai misalnya hateful berdasarkan grup data atau factor. Format fungsi ini adalah sebagi berikut:
tapply(10, Alphabetize, FUN = Cypher, ..., simplify = True)
Notation:
- 10: vektor, information frame atau listing
- INDEX: list satu atau beberapa gene yang memiliki panjang sama dengan
X.- FUN: fungsi yang akan digunakan. Fungsi yang dapat digunakan dapat berupa fungsi dasar matematika atau statistika, serta user ascertain part. Subset juga dimungkinkan pada fungsi ini.
- …: opsional argumen pada fungsi yang digunakan.
- simplify: logical. Jika nilainya TRUE maka output yang dihasilkan adalah bentuk skalar.
Berikut adalah contoh penerapannya:
## membuat tabel frekuensi groups <- equally.factor(rbinom(32, north = 5, prob = 0.4)) tapply(groups, groups, length)
## eleven 12 13 14 ## i 2 one 1
# atau table(groups)
## groups ## 11 12 13 xiv ## 1 2 i 1
## membuat tabel kontingensi # menghitung jumlah breaks berdasarkan faktor jenis wool # dan tensi level tapply(10=warpbreaks$breaks, INDEX=warpbreaks[,-one], FUN=sum)
## tension ## wool L Thousand H ## A 401 216 221 ## B 254 259 169
# menghitung mean panjang gigi babi hutan berdasarkan # jenis suplemen dan dosisnya tapply(ToothGrowth$len, ToothGrowth[,-1], mean)
## dose ## supp 0.5 1 2 ## OJ 13.23 22.70 26.06 ## VC 7.98 16.77 26.14
# menghitung mpg minimum berdasarkan jumlah silinder pada mobil tapply(mtcars$mpg, mtcars$cyl, min, simplify=FALSE)
## $`4` ## [1] 21.4 ## ## $`half-dozen` ## [1] 17.8 ## ## $`8` ## [1] 10.iv
2.xiv Loop Menggunakan map function pada Library
purrr
Map function dari library
purrr
merupakan alternatif lain untuk melakukan looping selain dengan menggunakan for loop, while loop, atau utilize family. Berbeda dengan metode tersebut, map function mempermudah proses kita dalam melakukan looping karena dapat diintegrasikan dengan fungsi-fungsi dari library
tidyverse
seperti
dplyr
,
tibble
,
tidyr
, dll, yang akan banyak penulis bahas pada Affiliate selanjutnya. Selain itu, integrasi dengan library tersebut membuat setiap sintaks yang kita buat lebih mudah kita baca serta lebih cepat dalam prosesnya.
Fungsi-fungsi yang tersedia berdasarkan jenis output yang kita inginkan. Berikut adalah fungsi-fungsi map family unit beserta output yang dihasilkan:
-
map()
: membuat output berupa listing -
map_lgl()
: membuat output berupa vektor logical -
map_int()
: membuat output berupa vektor integer -
map_dbl()
: membuat output berupa vektor double -
map_chr()
: membuat output berupa vektor karakter
Berikut adalah format dari fungsi-fungsi tersebut:
map(.x, .f, ...) map_lgl(.ten, .f, ...) map_chr(.x, .f, ...) map_int(.x, .f, ...) map_dbl(.x, .f, ...)
Note:
- .x: list atau vaktor atomik.
- .f: formula fungsi.
- …: argumen tambahan dari fungsi.
Berikut adalah contoh dari penerapan fungsi-fungsi tersebut:
library(purrr)
## Warning: package 'purrr' was congenital under R version 3.5.3
# listing map(.x=iris[,-v], .f=mean, na.rm=True)
## $Sepal.Length ## [1] five.843333 ## ## $Sepal.Width ## [i] iii.057333 ## ## $Petal.Length ## [1] 3.758 ## ## $Petal.Width ## [ane] 1.199333
# vektor numerik map_dbl(.x=iris[,-5], .f=mean, na.rm=Truthful)
## Sepal.Length Sepal.Width Petal.Length Petal.Width ## five.843333 3.057333 3.758000 1.199333
# vektor integer map_int(.x=iris[,-five], length)
## Sepal.Length Sepal.Width Petal.Length Petal.Width ## 150 150 150 150
# vektor logical map_lgl(.x=iris, .f=is.double)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species ## TRUE TRUE True TRUE FALSE
# vektor karakter x <- c("Jakarta", "Bandung", "Surabaya") map_chr(.ten=x, .f=paste, "Kota")
## [1] "Djakarta Kota" "Bandung Kota" "Surabaya Kota"
2.fifteen Conclusion Making
Decicion Making
atau sering disebut sebagai
if then else statement
merupakan bentuk percabagan yang digunakan manakala kita ingin agar programme dapat melakukan pengujian terhadap syarat kondisi tertentu. Pada Tabular array 5 disajikan daftar percabangan yang digunakan pada
R
.
Table v
Daftar percabangan pada
R
Statement | Keterangan |
---|---|
if argument |
if statement hanya terdiri atas sebuah ekspresi Boolean, dan diikuti satu atau lebih statement |
if…else statement |
if else argument terdiri atas beberapa buah ekspresi Boolean. Ekspressi Boolean berikutnya akan dijalankan jika ekspresi *Boolan sebelumnya bernilai FALSE |
switch statement |
switch statement digunakan untuk mengevaluasi sebuah variabel beberapa pilihan |
2.15.1 if statement
Pola
if statement
disajikan pada Effigy 2
Figure 2: Diagram if statement (sumber: Primartha, 2018).
Berikut adalah contoh penerapan
if statement:
x <- c(1:5) if(is.vector(x)){ print("x adalah sebuah vector") }
## [1] "x adalah sebuah vector"
2.xv.2 if else statement
Pola dari
if else argument
disajikan pada Figure iii
Effigy iii: Diagram if else statement (sumber: Primartha, 2018).
Berikut adalah contoh penerapan
if else statement:
ten <- c("Andi","Iwan", "Adi") if("Rina" %in% x){ print("Rina ditemukan") } else if("Adi" %in% ten){ print("Adi ditemukan") } else{ impress("tidak ada yang ditemukan") }
## [1] "Adi ditemukan"
2.15.iii switch statement
Pola dari
switch statement
disajikan pada Figure 4
Figure 4: Diagram switch statement (sumber: Primartha, 2018).
Berikut adalah contoh penerapan
switch statement:
y = three ten = switch( y, "Selamat Pagi", "Selamat Siang", "Selamat Sore", "Selamat Malam" ) print(x)
## [one] "Selamat Sore"
two.16 Fungsi
Fungsi merupakan sekumpulan instruksi atau
statement
yang dapat melakukan tugas khusus. Sebagai contoh fungsi perkalian untuk menyelesaikan operasi perkalian, fungsi pemangkatan hanya untuk operasi pemangkatan, dll.
Pada
R
terdapat 2 jenis fungsi, yaitu:
build in fuction
dan
user define function.
build in fnction
merupakan fungsi bawaan
R
saat pertama kita menginstall
R
. Contohnya adalah
mean()
,
sum()
,
ls()
,
rm()
, dll. Sedangkan
user define fuction
merupakan fungsi-fungsi yang dibuat sendiri oleh pengguna.
Fungsi-fungsi buatan pengguna haruslah dideklarasikan (dibuat) terlebih dahulu sebelum dapat dijalankan. Pola pembentukan fungsi adalah sebagai berikut:
function_name <- role(argument_1, argument_2, ...){ role body }
Note:
- function_name
: Nama dari fungsi
R
.
R
akan menyimpan fungsi tersebut sebagai objek- argument_1, argument_2,…
:
Statement
bersifat opsional (tidak wajib).
Argument
dapat digunakan untuk memberi inputan kepada fungsi- function body
: Merupakan inti dari fungsi. Fuction body dapat terdiri atas 0 argument (kosong) hingga banyak argument.- return
: Fungsi ada yang memiliki
output
atau
return value
ada juga yang tidak. Jika fungsi memiliki
return value
maka
return value
dapat diproses lebih lanjut
Berikut adalah contoh penerapan
user define function:
# Fungsi tanpa argument bilang <- function(){ print("Hello Earth!!") } # Print bilang()
## [1] "Howdy World!!"
# Fungsi dengan argumen tambah <- function(a,b){ print(a+b) } # Impress tambah(five,3)
## [1] 8
# Fungsi dengan return value kali <- part(a,b){ return(a*b) } # Impress kali(4,3)
## [1] 12
Referensi
- Primartha, R. 2018.
Belajar Car Learning Teori dan Praktik. Penerbit Informatika : Bandung. - Rosadi,D. 2016.
Analisis Statistika dengan R. Gadjah Mada University Printing: Yogyakarta. - STHDA.
Easy R Programming Nuts. http://www.sthda.com/english/wiki/easy-r-programming-basics - Venables, W.N. Smith D.M. and R Cadre Squad. 2018.
An Introduction to R. R Manuals. - The R Cadre Squad. 2018.
R: A Linguistic communication and Environment for Statistical Calculating. R Manuals.
Hasil Dari Penjumlahan Relasi Logik 2 1 Adalah
Source: https://environmental-data-modeling.netlify.app/tutorial/02_sintaks-bahasa-r/