Dalam menginstall package di R, dapat menggunakan fungsi install.packages(‘nama package’). Silakan copy code di bawah ini untuk mencoba melakukan instalasi package di R. Langkah lainnya, RStudio telah memberikan user interface yang nyaman bagi penggunanya. Kita bisa ke bagian window “Package” -> “Install” -> Tulis Nama Package -> “Install”.
#dplyr adalah nama package yang akan diinstal
#hapus hashtage pertama pada baris install.packages. '#' digunakan untuk memberikan komentar
#install.packages('dplyr')
Ketika package telah berhasil diinstal, langkah selanjutnya yang kita butuhkan untuk menggunakan fungsi-fungsi / syntax yang terkandung dalam package tersebut adalah dengan menyisipkan atau “load” package tersebut. Kita dapat menggunakan fungsi library(nama package) seperti pada chunck di bawah ini:
#Load package
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Perhatikan bahwa terdapat perbedaan dalam menulis nama package dalam fungsi library dan install.packages. Pada fungsi library, nama package yang ditulis dengan tidak menggunakan tanda petik. Namun, pada fungsi install.packages, nama package ditulis dengan menggunakan tanda petik. Hal ini sebenarnya bukanlah menjadi masalah karena library(‘dplyr’) juga akan valid apabila code tersebut di-run. Namun yang sebenarnya terjadi adalah R membaca “dplyr” sebagai suatu string sedangkan apabila tidak menggunakan petik, dplyr akan dibaca sebagai sebuah objek atau variable. Hal ini akan dibahas lebih lanjut nantinya. Dalam R, deklarasi variable dapat dilakukan secara fleksible. User dapat menggunakan = ataupun <- sebagai perintah untuk melakukan deklarasi variable. Perhatikan code di bawah ini:
#Deklarasi vairbale x dengan nilai 3
x <- 3
#Deklarasi variable z dengan nilai 'Hello World'
z = 'Hello World'
Agar dapat melihat nilai yang terkandung dalam variable, R menawarkan solusi yang lebih fleksible ketimbang bahas pemograman lainnya. Di R, kita bisa langsung menuliskan nama vairablenya dan secara otomatis R akan mengembalikan nilai yang terkandung dalam variable tersebut. Namun, kita juga dapat menggunakan fungsi print untuk menampilkan nilai yang terkadung dalam variable tersebut.
print(x)
## [1] 3
z
## [1] "Hello World"
Vektor
Saat menggunakan R, kita akan sangat bergantung dengan vektor. Dalam membuat vektor di R, kita dapat memanfaatkan function container dengan syntax “c(…)”. Isi dari container tersebut dapat berupa kumpulan titik data yang berbeda-beda. Perhatikan code di bawah ini:
#Vektor berisi data numerik
v <- c(1,2,3)
v
## [1] 1 2 3
#Vektor berisi data string / character
c <- c('hello','world')
c
## [1] "hello" "world"
#Vektor berisi data logical atau boolean
b <- c(TRUE, FALSE, TRUE)
b
## [1] TRUE FALSE TRUE
#Perhaitkan bahwa tipe data string / character membutuh kan tanda ' atau "
#Vektor dapat memuat beragam jenis tipe / kelas data.
r <- c(1, FALSE, 'Hai Dunia')
r
## [1] "1" "FALSE" "Hai Dunia"
Data Frame
Tipe data berikutnya yang akan sering sekali ditemui dalam proses analisis data adalah data frame. Data frame dapat dipandang sebuah spreadsheet. Data frame biasanya menjadi pre-requisite bentuk data untuk package statistika. Deklarasi data frame dapat dilakukan seperti code di bawah:
dataset <- data.frame(Nama = c('Dedi','Dono','Deden'),
Umur = c(23, 33, 16))
dataset
## Nama Umur
## 1 Dedi 23
## 2 Dono 33
## 3 Deden 16
Perhatikan bahwa dalam proses analisis data, seringkali data yang kita olah merupakan data dengan ukuran jutaan baris dan puluhan hingga ratusan kolom. Dengan demikian, menampilkan seluruh dataset dalam console akan menjadi sesuatu yang mubazir. Lebih lanjut lagi, import data ke dalam RStudio Environment juga dibutuhkan agar kita dapat mengolah dataset tersebut.
#Mengambil informasi lokasi working directory
getwd()
## [1] "/Users/gojekindonesia"
#Mengganti lokasi working directory
#Gunakan setwd untuk mengganti working directory
Perhatikan code di atas! Prose di atas diperlukan untuk mempermudah kita dalam melakukan import dataset. Akibat dari code di atas, agar dataset yang kita inginkan dapat dengan mudah diimport, dataset harus disimpan di dalam working directory yang telah kita tetapkan di atas.
#dataexternal <- read.csv('~/Downloads/Kuesioner.csv')
#Perhatikan
#?read.csv "untuk mengeluarkan help mengenai function read csv"
Matrix dan List
Selain, vektor dan data frame, terdapat dua jenis tipe data lagi yang juga sering digunakan yaitu matriks dan list. List merupakan sebuah daftar yang isi elemennya dapat terdiri dari kelas data yang berbeda-beda. Perhatikan code di bawah ini!
b <- list(c(1,2,3), 'Hei', matrix(c(1,0,0,1),ncol = 2, nrow = 2))
b
## [[1]]
## [1] 1 2 3
##
## [[2]]
## [1] "Hei"
##
## [[3]]
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
m <- matrix(c(1,0,0,1), ncol = 2, nrow = 2)
#Melakukan subset matrix dan list
m[2,2]
## [1] 1
b[1]
## [[1]]
## [1] 1 2 3
b[[1]]
## [1] 1 2 3
#Perhatikan kelas dari kedua subset b di atas
class(b[1])
## [1] "list"
class(b[[1]])
## [1] "numeric"
#Perhatikan kembali hasil print variable list b
#Jalankanlah code di bawah ini
names(b) <- c('VektorBilangan', 'Character', 'Matrix')
b
## $VektorBilangan
## [1] 1 2 3
##
## $Character
## [1] "Hei"
##
## $Matrix
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
b$Character
## [1] "Hei"
b[[2]]
## [1] "Hei"
Operasi Aritmatika di R
Operasi aritmatika di R dapat dilakukan dengan mudah. Terutama apabila kita ingin melakukan transformasi data terhadap tiap elemen vektor ataupun matriks. Perhatikan code di bawah ini:
x <- c(1,2,3,4)
x + 3
## [1] 4 5 6 7
x * 10
## [1] 10 20 30 40
x / 10
## [1] 0.1 0.2 0.3 0.4
x - 1
## [1] 0 1 2 3
Berikut ini adalah beberapa fungsi dasar di R untuk menghitung sari numerik dari suatu vektor atau data frame.
x <- c(10,3,23,11)
#Jumlah total
sum(x)
## [1] 47
#Jumlah perkalian
prod(x)
## [1] 7590
#Rataan
mean(x)
## [1] 11.75
#Maksimum
max(x)
## [1] 23
#Minimum
min(x)
## [1] 3
#Banyak datum
length(x)
## [1] 4
#Standard Deviasi
sd(x)
## [1] 8.301606
#Variansi
var(x)
## [1] 68.91667
#Quantile
quantile(x,0.5)
## 50%
## 10.5
#Hal yang perlu diingat!
#Perhatikan bahwa di tiap fungsi memiliki atribut na.rm = FALSE.. Mengubah atribut ini menjadi
#na.rm = TRUE apabila terhadap elemen not available dalam data
mat <- matrix(c(1,2,3,4), ncol = 2, nrow = 2)
sum(mat)
## [1] 10
mean(mat)
## [1] 2.5
max(mat)
## [1] 4
min(mat)
## [1] 1
Looping dan Ifelse
for (i in seq(1,3,0.5)){
print(i)
}
## [1] 1
## [1] 1.5
## [1] 2
## [1] 2.5
## [1] 3
x <- 0
while(x <= 5){
print(x)
x <- x + 1
}
## [1] 0
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
z <- 0
z <- 3
ifelse(z < 2 & x < 8, TRUE, FALSE)
## [1] FALSE
Analisis Data Frame
class(iris)
## [1] "data.frame"
head(iris, n = 6)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
head(iris, n = 10)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5.0 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
tail(iris, n = 5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 146 6.7 3.0 5.2 2.3 virginica
## 147 6.3 2.5 5.0 1.9 virginica
## 148 6.5 3.0 5.2 2.0 virginica
## 149 6.2 3.4 5.4 2.3 virginica
## 150 5.9 3.0 5.1 1.8 virginica
tail(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 145 6.7 3.3 5.7 2.5 virginica
## 146 6.7 3.0 5.2 2.3 virginica
## 147 6.3 2.5 5.0 1.9 virginica
## 148 6.5 3.0 5.2 2.0 virginica
## 149 6.2 3.4 5.4 2.3 virginica
## 150 5.9 3.0 5.1 1.8 virginica
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd 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. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
#Subsetting data frame
#Ingin diambil baris pertama dari data set iris
iris[1,]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
#Ingin dilihat priview head dari vektor data Sepal.Length
head(iris[1])
## Sepal.Length
## 1 5.1
## 2 4.9
## 3 4.7
## 4 4.6
## 5 5.0
## 6 5.4
head(iris$Sepal.Length)
## [1] 5.1 4.9 4.7 4.6 5.0 5.4
#Subsetting dengan kondisi tertentu
setosa1 <- iris[iris$Species == 'setosa',]
head(setosa1)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
setosa2 <- iris[iris$Species == 'setosa' & iris$Sepal.Length < 4.9,]