PENGOLAHAN OBJECT, STRUKTUR KENDALI DAN MANAJEMENT DATA FRAME
Pengolahan Object
Terdapat bebepa object yag ada di R diantaranya adalah :
Vector
Vector terbagi atas dua yaitu vector character dan vector numeric. Ada pun pengolahan pada data vector yang paling sederhana adalah penerapan aljabar seperti + - / %%
dan bebrapa seperti fungsi c
dan :
.
Contoh 1 :
= 1 + 1
a = 3*2
b = a/b c
Memanggil data vector dapat menggunakan fungsi c dan masukan beberapa yang diinginkan
<- c(1,2,4,3,5,4)
data data
## [1] 1 2 4 3 5 4
Nilai vector data yang disusun berurutan ataupun pada penggunaan ke-2 dari : dapat digunakan untuk membuat data yang berutan dari data dapat digunakan
3] data[
## [1] 4
1:2] data[
## [1] 1 2
<- 1:-10
da da
## [1] 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
Data vector yang berurutan dapat juga digunakan fungsi seq
<- seq(from = 1, to = 15, by = 2)
data data
## [1] 1 3 5 7 9 11 13 15
Sedangkan untuk vector numerik fungsi seq tidak dapat digunakan. Adapun beberapa fungsi vector characters adalah nchar() , paste() , substr(), substring()
:
nchar
### adalah fungsi yang digunakan untuk menghitung jumlah karakter yang ada dalam sebuah kata ataupun kalimat
<- c("Ani dan Budi pergi kepasar")
a <- nchar(a)
ac ac
## [1] 26
paste()
Adalah fungsi yang digunakan untuk memanggil atau menulis kembali elemen karakter yang telah di input
<- paste(a)
ap ap
## [1] "Ani dan Budi pergi kepasar"
substr()
Adalah pemanggilan elemen karakter k hingga k+n dengan urutanya
<- substr(a,4,10)
sub sub
## [1] " dan Bu"
substring()
fungsi ini bersifat sama dengan substr
<- substring(a, 4,10)
sb sb
## [1] " dan Bu"
List
List pada dasarnya mirip dengan object vector hanya saja pada data list kia dapat memaukan berbagai jenis element tidak hanya numeric saja ataupun karakter saja.
list(10, "B", c(1,2,3,4))
## [[1]]
## [1] 10
##
## [[2]]
## [1] "B"
##
## [[3]]
## [1] 1 2 3 4
Data Frame
Sama halnya dengan data list data frame adalah object yang bisa memuat beberapa jenis data dan memiliki 2 dimensi yaitu baris (row ) dan kolom (column)
= c(1,4,5,6,7)
a = c("aku","bersekolah", "online","setiap", "hari")
b <- data.frame(a,b)
data data
## a b
## 1 1 aku
## 2 4 bersekolah
## 3 5 online
## 4 6 setiap
## 5 7 hari
dim
Adalah fungsi untuk melihat dimensi dari data
dim(data)
## [1] 5 2
Str
str adalah fungsi yang digunakan untuk melihat stuktur dari setiap element data
str(data)
## 'data.frame': 5 obs. of 2 variables:
## $ a: num 1 4 5 6 7
## $ b: chr "aku" "bersekolah" "online" "setiap" ...
Matrix
Object matrix adalah objek yang memiliki 2 dmensi yaitu baris dan kolom dengan tipe data yang sama. jika element yang di input adalah sebuah numerik maka seluruh bagian element adalah numeric.
<- matrix(1:10, ncol = 5, nrow = 2, byrow= FALSE)
ma ma
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
<- matrix(data= 1, nrow =2, ncol=3)
m
###Mengambil element yang ada didalam matrix
3] ma[,
## [1] 5 6
2,4] ma[
## [1] 8
Struktur Kendali
Struktur kendali merupakan hal yang penting dalam pemogrman, struktur kendali adalah struktur pemograman dengan kondisi atau syarat tertentu. Adapun beberapa bentuk fungsi dari struktur kendali adalah :
If
Penggunaan if()
hanya dapat digunakaan jika terdapat satu kondisi saja.
\(if(kondisi){ekspresi jika kondisi benar}\)
= 9
x if(x> 10){
print("Saya tidak ingin belajar")}
If else
If else digunakan apabila terdapat minimal dua kondisi selebihnya fungsi ini sama dengan fungsi If
if(kondisi){ ekspresi jika kondisi benar } else { ekspresi jika kondisi salah };
= 9
x if(x> 10){
print("Saya tidak ingin belaja")
else{
}print("Saya ingin belajar 6jam sehari")
}
## [1] "Saya ingin belajar 6jam sehari"
For
Digunakan ketika kita telah mengetahui berapa jumlah iterasinya
for (i in 1:20)
print(i+2)
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
## [1] 21
## [1] 22
Contoh : Membangkitkan data distribusi uniform sebanyak 20 dengan kondisi if
<- rnorm(20,mean = 0,sd = 1)
d for(i in d){
if(i<=0.5){
print(i-0.005)
else print(i+0.005)
} }
## [1] 1.613865
## [1] 1.455678
## [1] -2.195957
## [1] -0.4371252
## [1] 2.044881
## [1] 0.3742114
## [1] -0.2208326
## [1] -0.3204569
## [1] 0.1276655
## [1] -1.870382
## [1] 0.3095912
## [1] -0.08830634
## [1] -0.324971
## [1] 1.840809
## [1] 1.205718
## [1] -0.4939729
## [1] 0.967698
## [1] 0.8819918
## [1] 0.4206997
## [1] 0.8738076
While
Perbedaan dari penggunaan while dan for adalah diketahuinya jumlah iterasi yang akan dijalanka
<- 1
i while (i<= 20){ ## menunjukan rentang nilai yang diinginkan
print(i+2)
=i+1 ##menunjukan bahwa nilai berjalan berurutan
i }
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
## [1] 21
## [1] 22
= 0
z while (z<=10){
= rnorm(20,0,1)
y = sum(y)
z print(z)
break
}
## [1] -1.581492
Switch
Switch adalah fungsi yang hampir mirip dengan fungsi if, dimana fungsi ini digunakan untuk fungsi ini akan menjalakna satu perintah berdasarkan beberapa piihan yang ada.
<- runif(12,0,1)
x <- 'perkalian'
type switch(type,perkalian = x*2,
pernambaha = x+2,
pengurangan = x^2)
## [1] 0.13417376 0.03280674 1.63074905 0.81720886 0.28363417 0.75825847
## [7] 1.99740822 1.22785279 0.97265264 1.80959686 0.85150622 0.16082769
Latihan
<- 0
a for(i in 1:5){
<- a+i
b print(b)
<-b
a }
## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15
<- 1
i <- 1
z while (z<15){
<-z+1
yprint(z)
<- i+1
ibreak
}
## [1] 1
<- 1
i <- 2
m repeat{m <- m+1
print(m)
<- i+1
i if(m>15)
break}
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
Manajement Data Frame
Subsetting Data
Adalah metode yang diinginkan apa bila kita ingin mengakses sebagian dari data yang diinginkan saja. subseting data frame yang paling sering []
Beberapa fungsi Logic yang digunakan pada subseting adalah :
==, !=, >, >=, <, <=, %in%, duplicated,is.na, is.null, is.numeric
<- iris
data head(data)
## 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
## Disini akan mensubset data berdasarkan row dan column. dimana disini data iris di subset dari row 1 hingga 2 dan column 1,3 dan 4
<- data[c(1:2),c(1,3:4)]
subiris1 head(subiris1)
## Sepal.Length Petal.Length Petal.Width
## 1 5.1 1.4 0.2
## 2 4.9 1.4 0.2
## Mensubset data berdasarkan perlakuan tertentu
<- data$Sepal.Length > 4.5
syarat1 <- data[syarat1,]
data2 head(data2)
## 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
## mensubset data dengan 2 perlakuan
<- data$Sepal.Length > 4 & data$Species == "virginica"
syarat2 <- data[syarat2,]
data3 data3
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 101 6.3 3.3 6.0 2.5 virginica
## 102 5.8 2.7 5.1 1.9 virginica
## 103 7.1 3.0 5.9 2.1 virginica
## 104 6.3 2.9 5.6 1.8 virginica
## 105 6.5 3.0 5.8 2.2 virginica
## 106 7.6 3.0 6.6 2.1 virginica
## 107 4.9 2.5 4.5 1.7 virginica
## 108 7.3 2.9 6.3 1.8 virginica
## 109 6.7 2.5 5.8 1.8 virginica
## 110 7.2 3.6 6.1 2.5 virginica
## 111 6.5 3.2 5.1 2.0 virginica
## 112 6.4 2.7 5.3 1.9 virginica
## 113 6.8 3.0 5.5 2.1 virginica
## 114 5.7 2.5 5.0 2.0 virginica
## 115 5.8 2.8 5.1 2.4 virginica
## 116 6.4 3.2 5.3 2.3 virginica
## 117 6.5 3.0 5.5 1.8 virginica
## 118 7.7 3.8 6.7 2.2 virginica
## 119 7.7 2.6 6.9 2.3 virginica
## 120 6.0 2.2 5.0 1.5 virginica
## 121 6.9 3.2 5.7 2.3 virginica
## 122 5.6 2.8 4.9 2.0 virginica
## 123 7.7 2.8 6.7 2.0 virginica
## 124 6.3 2.7 4.9 1.8 virginica
## 125 6.7 3.3 5.7 2.1 virginica
## 126 7.2 3.2 6.0 1.8 virginica
## 127 6.2 2.8 4.8 1.8 virginica
## 128 6.1 3.0 4.9 1.8 virginica
## 129 6.4 2.8 5.6 2.1 virginica
## 130 7.2 3.0 5.8 1.6 virginica
## 131 7.4 2.8 6.1 1.9 virginica
## 132 7.9 3.8 6.4 2.0 virginica
## 133 6.4 2.8 5.6 2.2 virginica
## 134 6.3 2.8 5.1 1.5 virginica
## 135 6.1 2.6 5.6 1.4 virginica
## 136 7.7 3.0 6.1 2.3 virginica
## 137 6.3 3.4 5.6 2.4 virginica
## 138 6.4 3.1 5.5 1.8 virginica
## 139 6.0 3.0 4.8 1.8 virginica
## 140 6.9 3.1 5.4 2.1 virginica
## 141 6.7 3.1 5.6 2.4 virginica
## 142 6.9 3.1 5.1 2.3 virginica
## 143 5.8 2.7 5.1 1.9 virginica
## 144 6.8 3.2 5.9 2.3 virginica
## 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
## Subseting data dengan menggunakan fungsi %in%
<- data$Petal.Length %in% c(4.5,4.8,5.0)
sub3 <- data[sub3,]
data4 data4
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 52 6.4 3.2 4.5 1.5 versicolor
## 56 5.7 2.8 4.5 1.3 versicolor
## 67 5.6 3.0 4.5 1.5 versicolor
## 69 6.2 2.2 4.5 1.5 versicolor
## 71 5.9 3.2 4.8 1.8 versicolor
## 77 6.8 2.8 4.8 1.4 versicolor
## 78 6.7 3.0 5.0 1.7 versicolor
## 79 6.0 2.9 4.5 1.5 versicolor
## 85 5.4 3.0 4.5 1.5 versicolor
## 86 6.0 3.4 4.5 1.6 versicolor
## 107 4.9 2.5 4.5 1.7 virginica
## 114 5.7 2.5 5.0 2.0 virginica
## 120 6.0 2.2 5.0 1.5 virginica
## 127 6.2 2.8 4.8 1.8 virginica
## 139 6.0 3.0 4.8 1.8 virginica
## 147 6.3 2.5 5.0 1.9 virginica
Sorting Data
Mengurutkan data berdasarkan beberapa variable atau tertentu dan dilakukan dengan membuat vektor logika.Adapun fungsi yang sering digunakan adalah
##order()
head(order(data$Petal.Width))
## [1] 10 13 14 33 38 1
#### Atau dapat diaplikasikan sebagai berikut
##sort()
head(sort(data$Sepal.Length))
## [1] 4.3 4.4 4.4 4.4 4.5 4.6
<- order(data$Petal.Lengt)
sor <- data[sor,]
data5 head(data5)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 23 4.6 3.6 1.0 0.2 setosa
## 14 4.3 3.0 1.1 0.1 setosa
## 15 5.8 4.0 1.2 0.2 setosa
## 36 5.0 3.2 1.2 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 17 5.4 3.9 1.3 0.4 setosa
##rev()
head(rev(data$Sepal.Length))
## [1] 5.9 6.2 6.5 6.3 6.7 6.7
<- rev(data$Petal.Lengt)
re <- data[re,]
data6 head(data6)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 5 5 3.6 1.4 0.2 setosa
## 5.1 5 3.6 1.4 0.2 setosa
## 5.2 5 3.6 1.4 0.2 setosa
## 5.3 5 3.6 1.4 0.2 setosa
## 5.4 5 3.6 1.4 0.2 setosa
## 5.5 5 3.6 1.4 0.2 setosa
##rank()
head(rev(data$Sepal.Length))
## [1] 5.9 6.2 6.5 6.3 6.7 6.7
Recording Data
Digunakan untuk membuat nilai baru dari nilai peubah yang sudah ada. Fungsi yang biasa digunakan adalah ifelse() dan recode
##ifelse()
### Jika dilihat cara logical penambahan nilai dalam variabel
$kode <- 0*(data$Sepal.Length >= 4) + 1*(data$Sepal.Length <= 4 )
data
$kode2 <- ifelse(data$Sepal.Length <=5,1,0)
data$kode2 data
## [1] 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0
## [38] 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
## [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
## [112] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [149] 0 0
Merging Data
Adalah suatu proses yang digunakan untuk memperluas data. dapat digunakan dengan fungsi rbind() , cbind, dan marge()
##rbind
### adalah rbind adalah mengabungkan row atau baris
<- 1:4
number1 <- 2:8
number2 <- rbind(number1,number2) number
## Warning in rbind(number1, number2): number of columns of result is not a
## multiple of vector length (arg 1)
number
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## number1 1 2 3 4 1 2 3
## number2 2 3 4 5 6 7 8
##atau dapat dengan matrix
<- matrix(1:5,5,1)
matrix1 <- matrix(6:10,5,1)
matrix2 <- rbind(matrix1,matrix2)
matrix
##cbind
<- cbind(matrix1,matrix2)
matrixc matrixc
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
Reshaping Data
Membentuk data baru dengan cara:
- Long to wide format
### Long to Wide
<- data.frame(
data Nama = c("Andi","Budi","Jumiten","Azre"),
Kelas = c("1A","1A","1B","1B"),
GPA = c(3.4,3.3,3.25,3.6),
Peringkat = c(2,3,4,1))
data
## Nama Kelas GPA Peringkat
## 1 Andi 1A 3.40 2
## 2 Budi 1A 3.30 3
## 3 Jumiten 1B 3.25 4
## 4 Azre 1B 3.60 1
= reshape(data,idvar=c("Nama","Kelas"),timevar = "Peringkat",direction = "wide")
R
R
## Nama Kelas GPA.2 GPA.3 GPA.4 GPA.1
## 1 Andi 1A 3.4 NA NA NA
## 2 Budi 1A NA 3.3 NA NA
## 3 Jumiten 1B NA NA 3.25 NA
## 4 Azre 1B NA NA NA 3.6