Objek di R, Pengolahan objek dan struktur kendali

c("sa","ya")[rep(c(1,2,1,1),times=3)]
##  [1] "sa" "ya" "sa" "sa" "sa" "ya" "sa" "sa" "sa" "ya" "sa" "sa"

Syntax diatas menghasilkan output “sa” “ya” “sa” “sa” dengan pengulangan (times) 3 kali. fungsi rep() yang ada pada kurung siku akan mengakses elemen yang ada pada vektor c(“sa”, “ya”) sesuai dengan indeks vektor dimana untuk indeks 1 akan menakses elemen “sa” dan indeks 2 untuk elemen “ya”.

c("si","sir")[rep(rep(1:2,each=2),3)]
##  [1] "si"  "si"  "sir" "sir" "si"  "si"  "sir" "sir" "si"  "si"  "sir" "sir"

Syntax diatas menghasilkan output “si” “si” “sir” “sir” dengan pengulangan 3 kali. fungsi rep(1:2,each) akan mengakses elemen yang ada pada vektor c(“si”, “sir”) sesuai dengan indeks vektor dimana untuk indeks 1 akan menakses elemen “si” dan indeks 2 untuk elemen “sir” lalu diulang sebanyak (each) 2 kali. Proses tersebut diulangi dengan fungsi rep terluar sebanyak 3 kali.

paste(c("D","F"), 1:7,sep = "")
## [1] "D1" "F2" "D3" "F4" "D5" "F6" "D7"

Syntax diatas menghasilkan output “D1” “F2” “D3” “F4” “D5” “F6” “D7”. fungsi paste akan mengeluarkan elemen yang ada pada vektor c(“D”, “F”) dilanjutkan dengan bilangan 1 sampai 7 dengan pemisah (sep) "" (tanpa spasi)

seq(1, 30, by = 3)
##  [1]  1  4  7 10 13 16 19 22 25 28

Syntax diatas menghasilkan output 1 4 7 10 13 16 19 22 25 28. fungsi seq akan mengeluarkan elemen 1 sampai 30 dengan jeda (by) 3 bilangan

Perl <- paste("K", rep(1:3, each = 3), sep = "")
Kel <- factor(rep(1:3, times = 3))
Resp <- seq(1,25, by = 3)
data1 <- data.frame(Perl, Kel, Resp)
data1
##   Perl Kel Resp
## 1   K1   1    1
## 2   K1   2    4
## 3   K1   3    7
## 4   K2   1   10
## 5   K2   2   13
## 6   K2   3   16
## 7   K3   1   19
## 8   K3   2   22
## 9   K3   3   25

Syntax diatas menghasilkan raw data sebuah perancangan percobaan RAKL dengan 3 perlakuan dan 3 kelompok (anggaplah respon percobaan berupa baris bilangan). fungsi data.frame digunakan untuk menyatukan kolom peubah sehingga mennjadi suatu data frame.

y2 <- c("Az","Zahra","Amon","Ra") 
n2 <- nchar(y2)
n2
## [1] 2 5 4 2
y3 <- substr("Statistika dan Sains Data",15,18) #”nian”
y3
## [1] " Sai"

Syntax diatas menghasilkan jumlah huruf yang terdapat pada setiap kata “Az”,“Zahra”,“Amon”,“Ra” di objek y2 dan mengambil huruf ke 15 sampai huruf ke 17 pada kalimat Statistika dan Sains Data di objek y3

Z2 <- matrix(1:4,4,2,byrow=T)
Z2
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    1    2
## [4,]    3    4

Sintaks diatas berfungsi untuk membuat matrix dengan nilai 1 sampai 4 yang diulang 2 kali dengan perintah diisi berdasarkan baris

Z4 <- t(Z2) %*% Z2

Sintaks diatas berfungsi untuk pengoperasian matrix dengan membuat transpose Z2 lalu mengalikan matrix dengan sintaks %*%

e <- eigen(Z4)

Sintaks diatas berfungsi untuk pengoperasian matrix dengan mengambil vektor ciri dan akar ciri dari matrix Z2

acak <- sample(1:5,1)
switch(EXPR=acak, "1" = "a", "2" = "z",
       "3" = "m", "4" = "h", "5" = "t")
## [1] "t"

Sintaks diatas berfungsi untuk mengambil bilangan acak dengan fungsi kendali switch dimana jika acak bernilai 1 maka output adalah “a”, jika acak bernilai 2 maka output adalah “z”, dst

Z6 <- matrix(1:25,5,5)
apply(Z6,1,sum)
## [1] 55 60 65 70 75
apply(Z6,2,sd)
## [1] 1.581139 1.581139 1.581139 1.581139 1.581139

Sintaks diatas berfungsi untuk pengoperasian secara baris dan kolom menggunakan fungsi apply

a<-0
for(i in 1:5) { b<-a+i
print(b)
a<-b }
## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15

Sintaks diatas berfungsi untuk melakukan looping dimana bilangan 1 sampai 5 akan dilakukan operasi penjumlahan dan hasil tersebut akan dikeluarkan

Manajemen Data Frame

data1['baru1'] <- 1:9
data1
##   Perl Kel Resp baru1
## 1   K1   1    1     1
## 2   K1   2    4     2
## 3   K1   3    7     3
## 4   K2   1   10     4
## 5   K2   2   13     5
## 6   K2   3   16     6
## 7   K3   1   19     7
## 8   K3   2   22     8
## 9   K3   3   25     9

Syntax diatas menghasilkan kolom baru bernama ‘baru1’ yang berisi nilai 1 sampai dengan 9

kel3 <- data1[data1$Kel == 3,]
kel3
##   Perl Kel Resp baru1
## 3   K1   3    7     3
## 6   K2   3   16     6
## 9   K3   3   25     9

Syntax diatas dilakukan untuk mengakses sebagian data dimana akan menghasilkan data untuk kolom “Kel” bernilai 3.

kel2r13 <- data1[data1$Kel == 2 & data1$Resp == "13",]
kel2r13
##   Perl Kel Resp baru1
## 5   K2   2   13     5

Syntax diatas dilakukan untuk mengakses sebagian data dimana akan menghasilkan data untuk kolom “Kel” bernilai 2 dan “Resp” bernilai 13 .

prima <- c(2, 3, 5, 7, 11, 13, 17, 19, 23)
resprima <- data1[data1$Resp %in% prima,]
resprima
##   Perl Kel Resp baru1
## 3   K1   3    7     3
## 5   K2   2   13     5
## 7   K3   1   19     7

Syntax diatas dilakukan untuk mengakses sebagian data dimana akan menghasilkan data untuk kolom “Resp” bernilai prima

kelordered <- data1[order(data1$Kel),]
kelordered
##   Perl Kel Resp baru1
## 1   K1   1    1     1
## 4   K2   1   10     4
## 7   K3   1   19     7
## 2   K1   2    4     2
## 5   K2   2   13     5
## 8   K3   2   22     8
## 3   K1   3    7     3
## 6   K2   3   16     6
## 9   K3   3   25     9

Syntax diatas dilakukan untuk sorting data dimana akan menghasilkan data untuk kolom “Kel” dengan nilai berurutan menggunakan fungsi order dari yang terkecil hingga terbesar

keldesc <- data1[order(data1$Perl, data1$Resp, decreasing = TRUE),]
keldesc
##   Perl Kel Resp baru1
## 9   K3   3   25     9
## 8   K3   2   22     8
## 7   K3   1   19     7
## 6   K2   3   16     6
## 5   K2   2   13     5
## 4   K2   1   10     4
## 3   K1   3    7     3
## 2   K1   2    4     2
## 1   K1   1    1     1

Syntax diatas dilakukan untuk sorting data dimana akan menghasilkan data untuk kolom “Perl” dan “Resp” dengan nilai berurutan menggunakan fungsi order dari yang terbesar hingga terkecil (decreasing)

kelrespdesc <- data1[order(data1$Kel, data1$Resp, decreasing = c(FALSE, TRUE)),]
kelrespdesc
##   Perl Kel Resp baru1
## 7   K3   1   19     7
## 4   K2   1   10     4
## 1   K1   1    1     1
## 8   K3   2   22     8
## 5   K2   2   13     5
## 2   K1   2    4     2
## 9   K3   3   25     9
## 6   K2   3   16     6
## 3   K1   3    7     3

Syntax diatas dilakukan untuk sorting data dimana akan menghasilkan data untuk kolom “Kel” dengan nilai berurutan menggunakan fungsi order dari yang terkecil hingga terbesar (decreasing FALSE) dan “Resp” dengan nilai berurutan dari yang terbesar hingga terkecil (decreasing TRUE)

data1$Code <- ifelse(data1$Resp > 5, 0, 1)
data1
##   Perl Kel Resp baru1 Code
## 1   K1   1    1     1    1
## 2   K1   2    4     2    1
## 3   K1   3    7     3    0
## 4   K2   1   10     4    0
## 5   K2   2   13     5    0
## 6   K2   3   16     6    0
## 7   K3   1   19     7    0
## 8   K3   2   22     8    0
## 9   K3   3   25     9    0

Syntax diatas dilakukan untuk recoding data dimana akan menghasilkan data untuk kolom baru “Code” dengan nilai 0 jika kolom “Resp” bernilai lebih dari 5 dan nilai 1 jika kolom “Resp” bernilai kurang dari 5 menggunakan fungsi ifelse

tabel1 <- data.frame(Az = c(50, 100, 200),Df = c("K4", 'K2', 'K5'))
tabel1 
##    Az Df
## 1  50 K4
## 2 100 K2
## 3 200 K5
databaru <- merge(data1, tabel1, by.x = 1, by.y = 2, all = FALSE)
databaru
##   Perl Kel Resp baru1 Code  Az
## 1   K2   3   16     6    0 100
## 2   K2   1   10     4    0 100
## 3   K2   2   13     5    0 100

Syntax diatas dilakukan untuk merging data dimana akan menghasilkan penggabungan data berdasarkan kolom “Perl” pada tabel 1 dengan kolom “Df” pada tabel 2 menggunakan fungsi merge

datawide <- reshape(data1[,-4], idvar="Perl", timevar="Kel", direction="wide")
datawide
##   Perl Resp.1 Code.1 Resp.2 Code.2 Resp.3 Code.3
## 1   K1      1      1      4      1      7      0
## 4   K2     10      0     13      0     16      0
## 7   K3     19      0     22      0     25      0

Syntax diatas dilakukan untuk reshaping data dimana akan menghasilkan data dengan struktur wide dengan kolom “Perl” sebagai kolom unik dan kolom “Kel” akan dipecah sehingga kolom “Resp” dan “Code” memiliki jumlah sesuai banyaknya data yang unik pada kolom “Kel” menggunakan fungsi reshape

datalong <- reshape(datawide, idvar="Perl", timevar="Kel", direction="long")
datalong
##      Perl Kel Resp.1 Code.1
## K1.1   K1   1      1      1
## K2.1   K2   1     10      0
## K3.1   K3   1     19      0
## K1.2   K1   2      4      1
## K2.2   K2   2     13      0
## K3.2   K3   2     22      0
## K1.3   K1   3      7      0
## K2.3   K2   3     16      0
## K3.3   K3   3     25      0

Syntax diatas dilakukan untuk reshaping data dimana akan menghasilkan data dengan struktur long dengan kolom “Perl” sebagai kolom unik dan terbentuk kolom baru “Kel” menggunakan fungsi reshape