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 :

a = 1 + 1
b = 3*2
c = a/b

Memanggil data vector dapat menggunakan fungsi c dan masukan beberapa yang diinginkan

data <- c(1,2,4,3,5,4)
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

data[3]
## [1] 4
data[1:2]
## [1] 1 2
da <- 1:-10
da
##  [1]   1   0  -1  -2  -3  -4  -5  -6  -7  -8  -9 -10

Data vector yang berurutan dapat juga digunakan fungsi seq

data <- seq(from = 1, to = 15, by = 2)
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

a <- c("Ani dan Budi pergi kepasar")
ac <- nchar(a)
ac
## [1] 26

paste()

Adalah fungsi yang digunakan untuk memanggil atau menulis kembali elemen karakter yang telah di input

ap <- paste(a)
ap
## [1] "Ani dan Budi pergi kepasar"

substr()

Adalah pemanggilan elemen karakter k hingga k+n dengan urutanya

sub <- substr(a,4,10)
sub
## [1] " dan Bu"

substring()

fungsi ini bersifat sama dengan substr

sb <- substring(a, 4,10)
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)

a = c(1,4,5,6,7)
b = c("aku","bersekolah", "online","setiap", "hari")
data <- data.frame(a,b)
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.

ma <- matrix(1:10, ncol = 5, nrow = 2, byrow= FALSE)
ma
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    3    5    7    9
## [2,]    2    4    6    8   10
m <- matrix(data= 1, nrow =2, ncol=3)

###Mengambil element yang ada didalam matrix

ma[,3]
## [1] 5 6
ma[2,4]
## [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}\)

x = 9
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 };

x = 9
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

d <- rnorm(20,mean = 0,sd = 1)
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

i <- 1 
while (i<= 20){ ## menunjukan rentang nilai yang diinginkan
  print(i+2)
  i=i+1  ##menunjukan bahwa nilai berjalan berurutan 
}
## [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
z = 0
while (z<=10){
  y = rnorm(20,0,1)
  z = sum(y)
  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.

x <- runif(12,0,1)
type <- 'perkalian'
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

a <- 0
for(i in 1:5){
  b <- a+i
  print(b)
  a<-b
}
## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15
i <- 1 
z <- 1
while (z<15){
y<-z+1
print(z)
i<- i+1
break
}
## [1] 1
i <- 1
m <- 2
repeat{m <- m+1
  print(m)
  i <- i+1
  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

data <- iris
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
subiris1 <- data[c(1:2),c(1,3:4)]
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

syarat1 <- data$Sepal.Length > 4.5
data2 <- data[syarat1,]
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 
syarat2 <- data$Sepal.Length > 4 & data$Species == "virginica"
data3 <- data[syarat2,]
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% 
sub3 <- data$Petal.Length %in% c(4.5,4.8,5.0)
data4 <- data[sub3,]
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
sor <- order(data$Petal.Lengt)
data5 <- data[sor,]
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
re <- rev(data$Petal.Lengt)
data6 <- data[re,]
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 

data$kode <- 0*(data$Sepal.Length >= 4) + 1*(data$Sepal.Length <= 4 )

data$kode2 <- ifelse(data$Sepal.Length <=5,1,0)
data$kode2
##   [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 
number1 <- 1:4
number2 <- 2:8
number <- rbind(number1,number2)
## 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
matrix1 <- matrix(1:5,5,1)
matrix2 <- matrix(6:10,5,1)
matrix <- rbind(matrix1,matrix2)

##cbind
matrixc <- cbind(matrix1,matrix2)
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 <- data.frame(
 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
R = reshape(data,idvar=c("Nama","Kelas"),timevar = "Peringkat",direction = "wide")

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