Praktikum 01 - Pemrograman Statistika

Objek di R

  • Jenis
    • Vector : c(…), seq(…), rep(…), paste(…)

    • Matrix : matrix(…, m,n), dim(vector)<-c(m,n), rbind(…), cbind(…)

    • Array : array(…,dim=c(…))

    • Factor : factor(…), ordered(…,levels=c(…))

    • List : list(…)

    • Data Frame : data.frame(…)

Vector

a1 <- c(2,4,7,3)
print(a1)
## [1] 2 4 7 3
assign("a2",c("2","4","7","3"))
baris bilangan
a3 <- seq(1,10, by=0.5)
print(a1)
## [1] 2 4 7 3
a4 <- seq(1,10, length.out=12)
print(a1)
## [1] 2 4 7 3
bilangan berulang
a5 <- rep(1,3)
print(a5)
## [1] 1 1 1
a6 <- rep(1:3,3)
print(a6)
## [1] 1 2 3 1 2 3 1 2 3
a7 <- rep(1:3,1:3)
print(a7)
## [1] 1 2 2 3 3 3
a8 <- rep(1:3,rep(2,3))
print(a8)
## [1] 1 1 2 2 3 3
a9 <- rep(1:3,each=2)
print(a9)
## [1] 1 1 2 2 3 3
karakter berpola
a10 <- paste("A", 1:10, sep="")
print(a10)
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"
a11 <- paste0("A", 1:10)
print(a11)
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"
a12 <- paste("A", 1:10, sep="-")
print(a12)
##  [1] "A-1"  "A-2"  "A-3"  "A-4"  "A-5"  "A-6"  "A-7"  "A-8"  "A-9"  "A-10"
a13 <- paste0("A", a8)
print(a13)
## [1] "A1" "A1" "A2" "A2" "A3" "A3"
akses vektor
a2[3]
## [1] "7"
a3[10:15]
## [1] 5.5 6.0 6.5 7.0 7.5 8.0
a10[c(4,7,9)]
## [1] "A4" "A7" "A9"
a13[-c(1:2)]
## [1] "A2" "A2" "A3" "A3"
length(a4)
## [1] 12

- Latihan 1

Tentukan output syntax program berikut:

  • c("la","ye")[rep(c(1,2,2,1),times=4)]
  • c("la","ye")[rep(rep(1:2,each=3),2)]
c("la","ye")[rep(c(1,2,2,1),times=4)]
##  [1] "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye"
## [16] "la"
c("la","ye")[rep(rep(1:2,each=3),2)]
##  [1] "la" "la" "la" "ye" "ye" "ye" "la" "la" "la" "ye" "ye" "ye"

- Latihan 2

  • Buatlah syntax agar dihasilkan output vektor sebagai berikut
    • X1 Y2 X3 Y4 X5 Y6 X7 Y8 X9 Y10
    • 1 4 7 10 13 16 19 22 25 28
vektor.a <- c("X1","Y2","X3","Y4","X5","Y6","X7","Y8","X9","Y10")
print(vektor.a)
##  [1] "X1"  "Y2"  "X3"  "Y4"  "X5"  "Y6"  "X7"  "Y8"  "X9"  "Y10"
vektor.b <- c(1,4,7,10,13,16,19,22,25,28)
print(vektor.b)
##  [1]  1  4  7 10 13 16 19 22 25 28
tabel.data<-data.frame(vektor.a,vektor.b)
print(tabel.data)
##    vektor.a vektor.b
## 1        X1        1
## 2        Y2        4
## 3        X3        7
## 4        Y4       10
## 5        X5       13
## 6        Y6       16
## 7        X7       19
## 8        Y8       22
## 9        X9       25
## 10      Y10       28

Matrix

a14 <- 1:12
print(a14)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
b1 <- matrix(a14,3,4)
print(b1)
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
b2 <- matrix(a14,3,4,byrow=TRUE)
print(b2)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
b3 <- matrix(1:10, 4, 4)
## Warning in matrix(1:10, 4, 4): data length [10] is not a sub-multiple or
## multiple of the number of rows [4]
print(b3)
##      [,1] [,2] [,3] [,4]
## [1,]    1    5    9    3
## [2,]    2    6   10    4
## [3,]    3    7    1    5
## [4,]    4    8    2    6
b4 <- matrix(1:10,4,5)
print(b4)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    5    9    3    7
## [2,]    2    6   10    4    8
## [3,]    3    7    1    5    9
## [4,]    4    8    2    6   10
b5 <- a14
print(b5)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
dim(b5)<-c(6, 2) #merubah objek vector ke matrix
dim(b5)
## [1] 6 2
b6 <- matrix(1:4,2)
print(b6)
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
b7 <- matrix(6:9,2)
print(b7)
##      [,1] [,2]
## [1,]    6    8
## [2,]    7    9
b8 <- rbind(b6,b7) #gabung baris
print(b8)
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## [3,]    6    8
## [4,]    7    9
b9 <- cbind(b7,b6) #gabung kolom
print(b9)
##      [,1] [,2] [,3] [,4]
## [1,]    6    8    1    3
## [2,]    7    9    2    4
dim(b8)
## [1] 4 2
dim(b9)
## [1] 2 4
dim(a14)
## NULL
length(b3)
## [1] 16

akses matrix

b2
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
b2[2,3]
## [1] 7
b2[2,2:4]
## [1] 6 7 8
b2[1:2,]
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
b2[c(1,3), -2]
##      [,1] [,2] [,3]
## [1,]    1    3    4
## [2,]    9   11   12
b2[10]
## [1] 4

Array

c1 <- array(a14, dim=c(2,2,3))
c1
## , , 1
## 
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## , , 2
## 
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
## 
## , , 3
## 
##      [,1] [,2]
## [1,]    9   11
## [2,]   10   12
c2 <- array(a14, dim=c(2,1,2,3))
c2
## , , 1, 1
## 
##      [,1]
## [1,]    1
## [2,]    2
## 
## , , 2, 1
## 
##      [,1]
## [1,]    3
## [2,]    4
## 
## , , 1, 2
## 
##      [,1]
## [1,]    5
## [2,]    6
## 
## , , 2, 2
## 
##      [,1]
## [1,]    7
## [2,]    8
## 
## , , 1, 3
## 
##      [,1]
## [1,]    9
## [2,]   10
## 
## , , 2, 3
## 
##      [,1]
## [1,]   11
## [2,]   12
c3 <- array(a14,dim=c(1,2,4,2))
c3
## , , 1, 1
## 
##      [,1] [,2]
## [1,]    1    2
## 
## , , 2, 1
## 
##      [,1] [,2]
## [1,]    3    4
## 
## , , 3, 1
## 
##      [,1] [,2]
## [1,]    5    6
## 
## , , 4, 1
## 
##      [,1] [,2]
## [1,]    7    8
## 
## , , 1, 2
## 
##      [,1] [,2]
## [1,]    9   10
## 
## , , 2, 2
## 
##      [,1] [,2]
## [1,]   11   12
## 
## , , 3, 2
## 
##      [,1] [,2]
## [1,]    1    2
## 
## , , 4, 2
## 
##      [,1] [,2]
## [1,]    3    4
c4 <- array(a14,dim=c(3,4))
c4
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

akses array

c2[,, 1,] #lembar 1 dari c2
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
c2[,,, 2] #buku ke 2 dari c2
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
c2[,, 1,3] #lembar ke 1 buku ke 3 dari c2
## [1]  9 10

Factor

a15 <- c("A","B","AB","O")
a15
## [1] "A"  "B"  "AB" "O"
d1 <- factor(a15) #skala pengukuran nominal
d1
## [1] A  B  AB O 
## Levels: A AB B O
d2 <- factor(a15,levels=c("O","A","B","AB"))
d2
## [1] A  B  AB O 
## Levels: O A B AB
levels(d2)
## [1] "O"  "A"  "B"  "AB"
a16 <- c("SD","SMP","SMA")
a16
## [1] "SD"  "SMP" "SMA"
d3 <- ordered(a16) #skala pengukuran ordinal
d3
## [1] SD  SMP SMA
## Levels: SD < SMA < SMP
d4 <- ordered(a16, levels=a16)
d4
## [1] SD  SMP SMA
## Levels: SD < SMP < SMA
d5 <- factor(a16, levels=a16, ordered=TRUE)
d5
## [1] SD  SMP SMA
## Levels: SD < SMP < SMA
levels(d4)
## [1] "SD"  "SMP" "SMA"

akses factor

d1[2]
## [1] B
## Levels: A AB B O
d4[2:3]
## [1] SMP SMA
## Levels: SD < SMP < SMA

List

a1; b2; c1; d2
## [1] 2 4 7 3
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## , , 1
## 
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## , , 2
## 
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
## 
## , , 3
## 
##      [,1] [,2]
## [1,]    9   11
## [2,]   10   12
## [1] A  B  AB O 
## Levels: O A B AB
e1 <- list(a1,b2,c1,d2)
e1
## [[1]]
## [1] 2 4 7 3
## 
## [[2]]
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## 
## [[3]]
## , , 1
## 
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## , , 2
## 
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
## 
## , , 3
## 
##      [,1] [,2]
## [1,]    9   11
## [2,]   10   12
## 
## 
## [[4]]
## [1] A  B  AB O 
## Levels: O A B AB
e2 <- list(vect=a1, mat=b2, array=c1, fac=d2)
e2
## $vect
## [1] 2 4 7 3
## 
## $mat
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## 
## $array
## , , 1
## 
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## , , 2
## 
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
## 
## , , 3
## 
##      [,1] [,2]
## [1,]    9   11
## [2,]   10   12
## 
## 
## $fac
## [1] A  B  AB O 
## Levels: O A B AB
#akses list
e1[[1]]
## [1] 2 4 7 3
e2$fac
## [1] A  B  AB O 
## Levels: O A B AB
e2[2]
## $mat
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
e1[c(2,4)]
## [[1]]
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## 
## [[2]]
## [1] A  B  AB O 
## Levels: O A B AB
dim(e2)
## NULL
length(e2)
## [1] 4
names(e2)
## [1] "vect"  "mat"   "array" "fac"

Data Frame

a17 <- 11:15
a17
## [1] 11 12 13 14 15
d5 <- factor(LETTERS[6:10])
d5
## [1] F G H I J
## Levels: F G H I J
f1 <- data.frame(d5,a17)
f1
##   d5 a17
## 1  F  11
## 2  G  12
## 3  H  13
## 4  I  14
## 5  J  15

akses data frame

f1[1,2]
## [1] 11
f1[3,]
##   d5 a17
## 3  H  13
f1$d5
## [1] F G H I J
## Levels: F G H I J
f1[,"a17"]
## [1] 11 12 13 14 15
colnames(f1)
## [1] "d5"  "a17"
str(f1)
## 'data.frame':    5 obs. of  2 variables:
##  $ d5 : Factor w/ 5 levels "F","G","H","I",..: 1 2 3 4 5
##  $ a17: int  11 12 13 14 15
summary(f1)
##  d5         a17    
##  F:1   Min.   :11  
##  G:1   1st Qu.:12  
##  H:1   Median :13  
##  I:1   Mean   :13  
##  J:1   3rd Qu.:14  
##        Max.   :15

- Latihan 3

Seorang peneliti merancang sebuah perancangan percobaan RAKL dengan 4 perlakuan dan 3 kelompok (anggaplah respon percobaan berupa baris bilangan). Bantulah peneliti tersebut untuk membuat raw data seperti output sebagai berikut!

Syntax yang bisa digunakan untuk membuat tabel tersebut adalah sebagai berikut:

Perl <- paste("P",rep(1:4,each=3), sep="")
Kel <- factor(rep(1:3,4))
Resp <- seq(1,23,by=2)
data1 <- data.frame(Perl,Kel,Resp)
print(data1)
##    Perl Kel Resp
## 1    P1   1    1
## 2    P1   2    3
## 3    P1   3    5
## 4    P2   1    7
## 5    P2   2    9
## 6    P2   3   11
## 7    P3   1   13
## 8    P3   2   15
## 9    P3   3   17
## 10   P4   1   19
## 11   P4   2   21
## 12   P4   3   23

Pengolahan Objek & Struktur Kendali

Pengolahan Objek

Operasi aljabar sederhana vektor numerik:

+,-, *, /, ^, %*%, %o%

x1 <- c(2,6,9,5)
x1
## [1] 2 6 9 5
x2 <- 1:4
x2
## [1] 1 2 3 4
x3 <- x1 + 1:2
x3
## [1]  3  8 10  7
x4 <- x1 + 1:3
## Warning in x1 + 1:3: longer object length is not a multiple of shorter object
## length
x4
## [1]  3  8 12  6
x5 <- x1*x2
x5
## [1]  2 12 27 20
#setara x'x
x6 <- x1 %*% x1 
x6
##      [,1]
## [1,]  146
#setara xx'
x7 <- x1 %o% x1 
x7
##      [,1] [,2] [,3] [,4]
## [1,]    4   12   18   10
## [2,]   12   36   54   30
## [3,]   18   54   81   45
## [4,]   10   30   45   25
Operasi dasar vektor karakter:

nchar(…), paste(…), substr(…), substring(…)

y1 <- c("Institut Pertanian Bogor")
y1
## [1] "Institut Pertanian Bogor"
n1 <- nchar(y1)
n1
## [1] 24
y2 <- c("Adam","Pramesti ","Fathi","Ririn")
y2
## [1] "Adam"      "Pramesti " "Fathi"     "Ririn"
n2 <- nchar(y2)
n2
## [1] 4 9 5 5
y3 <- substr(y1,15,18) #”nian”
y3
## [1] "nian"
y4 <- substring(y1,15) #”nian Bogor”
y4
## [1] "nian Bogor"
y5 <- substring(y1,4,8) #”titut”
y5
## [1] "titut"
Operasi dasar matriks:

t(…) , %*%, %o%, diag(…) , solve(…) , eigen(…)

Z1 <- matrix(1:6,2,3)
Z1
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
Z2 <- matrix(1:6,3,2,byrow=T)
Z2
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
Z3 <- matrix(6:9,2,2)
Z3
##      [,1] [,2]
## [1,]    6    8
## [2,]    7    9
Z4 <- Z1 %*% Z2
Z4
##      [,1] [,2]
## [1,]   35   44
## [2,]   44   56
Z5 <- Z3 * Z4
Z5
##      [,1] [,2]
## [1,]  210  352
## [2,]  308  504
#invers
INVZ <- solve(Z4) 
INVZ
##           [,1]      [,2]
## [1,]  2.333333 -1.833333
## [2,] -1.833333  1.458333
#identitas
INVZ %*% Z4
##      [,1]         [,2]
## [1,]    1 2.842171e-14
## [2,]    0 1.000000e+00
INVZ
##           [,1]      [,2]
## [1,]  2.333333 -1.833333
## [2,] -1.833333  1.458333
h <- c(5,11)
h
## [1]  5 11
#solusi SPL Zp=h
p <- solve(Z4,h) 
p
## [1] -8.500  6.875
#eigen value & eigen vector dr Z4
e <- eigen(Z4) 
e
## eigen() decomposition
## $values
## [1] 90.7354949  0.2645051
## 
## $vectors
##           [,1]       [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945  0.6196295
e$values #akses eigen values
## [1] 90.7354949  0.2645051
e[[2]] #akses eigen vectors
##           [,1]       [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945  0.6196295
e
## eigen() decomposition
## $values
## [1] 90.7354949  0.2645051
## 
## $vectors
##           [,1]       [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945  0.6196295

Struktur Kendali

  • Eksekusi bersyarat
    • if (kondisi) ekspresi else ekspresi
    • ifelse (kondisi,ekspresi benar,ekspresi salah)
    • switch(“kondisi”=ekspresi,…)
  • Pengulangan (loops)
    • for (objek in sekuens) ekspresi
    • while (kondisi) ekspresi
    • repeat ekspresi (untuk menghentikan gunakan perintah break)
  • Tanpa pengulangan
    • apply(array, margin, function, function args)
i<-1
while (i<=5) {
print(i^2)
i=i+1
}
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
y=runif(20)
for (i in y) {
if(i<0.5){
print(100*i)
} else print(i/100)
}
## [1] 18.09355
## [1] 0.009754725
## [1] 20.83111
## [1] 5.54656
## [1] 35.80623
## [1] 0.5754108
## [1] 44.95261
## [1] 25.08409
## [1] 0.006945164
## [1] 4.840807
## [1] 20.81228
## [1] 0.007806748
## [1] 0.00740109
## [1] 32.68768
## [1] 47.45507
## [1] 0.008912677
## [1] 0.00533508
## [1] 0.008148969
## [1] 39.7616
## [1] 32.53565
z=0
while(z<=10) {
y=runif(20)
z=sum(y)
print(z)
}
## [1] 11.00423
acak <- sample(1:5,1)
switch(EXPR=acak, "1" = "a", "2" = "z",
"3" = "m", "4" = "h", "5" = "t")
## [1] "m"
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

- Latihan 1

Tentukan hasil dari setiap perintah berikut Soal

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+i
  z<-y
  print(z)
  i<-i+1
}
## [1] 2
## [1] 4
## [1] 7
## [1] 11
## [1] 16
i<-1
m<-2
repeat
{
  m<-m+i
  print(m)
  i<-i+1
  if(m>15)
    break
}
## [1] 3
## [1] 5
## [1] 8
## [1] 12
## [1] 17

Manajemen Data Frame

Data yang digunakan pada materi ini:

Perl <-paste("P",rep(1:4,each=3),sep="")
Kel<-factor(rep(1:3,4))
Resp<-seq(1,23,by=2)
(data1 <-data.frame(Perl,Kel,Resp))
##    Perl Kel Resp
## 1    P1   1    1
## 2    P1   2    3
## 3    P1   3    5
## 4    P2   1    7
## 5    P2   2    9
## 6    P2   3   11
## 7    P3   1   13
## 8    P3   2   15
## 9    P3   3   17
## 10   P4   1   19
## 11   P4   2   21
## 12   P4   3   23

Seorang peneliti merancang sebuah perancangan percobaan RAKL dengan 4 perlakuan dan 3 kelompok (anggaplah respon percobaan berupa baris bilangan), kemudian disimpan dalam objek data1.

Membuat Peubah Baru

• Dilakukan seperti membuat vektor (dengan indeks atau operasi seleksi)

- Latihan 1

Pada data1, buatlah peubah 'baru1' yang berisi nilai dari 12 sampai 1 secara berurutan

data1$baru1<-12:1
data1
##    Perl Kel Resp baru1
## 1    P1   1    1    12
## 2    P1   2    3    11
## 3    P1   3    5    10
## 4    P2   1    7     9
## 5    P2   2    9     8
## 6    P2   3   11     7
## 7    P3   1   13     6
## 8    P3   2   15     5
## 9    P3   3   17     4
## 10   P4   1   19     3
## 11   P4   2   21     2
## 12   P4   3   23     1

Subsetting Data

  • Dilakukan untuk akses sebagian data

  • Membuat ide logic untuk diterapkan dalam vektor logic yang diinginkan

  • Fungsi yang digunakan :==, !=, >, >=, <, <=, %in%, duplicated(…), which(…), is.na(…), is.null (…), is.numeric(…), dll…

- Latihan 2

Dari data1 tersebut ambillah yang termasuk kelompok 1

indeks1 <- data1$Kel == 1
data2 <- data1[indeks1,]
data2
##    Perl Kel Resp baru1
## 1    P1   1    1    12
## 4    P2   1    7     9
## 7    P3   1   13     6
## 10   P4   1   19     3

- Latihan 3

Dari data1 tersebut ambillah yang termasuk kelompok 1 atau perlakuan P2

indeks2 <- data1$Kel == 1 | data1$Perl == "P2"
data3 <- data1[indeks2,]
data3
##    Perl Kel Resp baru1
## 1    P1   1    1    12
## 4    P2   1    7     9
## 5    P2   2    9     8
## 6    P2   3   11     7
## 7    P3   1   13     6
## 10   P4   1   19     3

- Latihan 4

Dari data1 tersebut ambillah amatan yang responnya berupa bilangan prima

indeks3 <- data1$Resp %in% c(2,3,5,7,11,13,17,19,23)
data4 <- data1[indeks3,]
data4
##    Perl Kel Resp baru1
## 2    P1   2    3    11
## 3    P1   3    5    10
## 4    P2   1    7     9
## 6    P2   3   11     7
## 7    P3   1   13     6
## 9    P3   3   17     4
## 10   P4   1   19     3
## 12   P4   3   23     1

Sorting Data

  • Dilakukan untuk mengurutkan data berdasarkan beberapa peubah tertentu
  • Dilakukan dengan membuat vektor logika untuk melakukan pengurutan data
  • Fungsi yang sering digunakan : order(…) , sort(…) , rev(…) , unique(…)

- Latihan 5

Urutkan data1 tersebut berdasarkan kelompok secara ascending

indeks4 <- order(data1$Kel)
data5 <- data1[indeks4,]
data5
##    Perl Kel Resp baru1
## 1    P1   1    1    12
## 4    P2   1    7     9
## 7    P3   1   13     6
## 10   P4   1   19     3
## 2    P1   2    3    11
## 5    P2   2    9     8
## 8    P3   2   15     5
## 11   P4   2   21     2
## 3    P1   3    5    10
## 6    P2   3   11     7
## 9    P3   3   17     4
## 12   P4   3   23     1

- Latihan 6

Urutkan data1 tersebut berdasarkan kelompok dan respon secara descending

indeks5 <- order(data1$Kel,
data1$Resp, decreasing=TRUE)
data6 <- data1[indeks5,]
data6
##    Perl Kel Resp baru1
## 12   P4   3   23     1
## 9    P3   3   17     4
## 6    P2   3   11     7
## 3    P1   3    5    10
## 11   P4   2   21     2
## 8    P3   2   15     5
## 5    P2   2    9     8
## 2    P1   2    3    11
## 10   P4   1   19     3
## 7    P3   1   13     6
## 4    P2   1    7     9
## 1    P1   1    1    12

- Latihan 7

Urutkan data1 tersebut berdasarkan kelompok secara ascending dan respon secara descending

indeks6 <- order(data1$Resp,
decreasing=TRUE)
data7 <- data1[indeks6,]
data7
##    Perl Kel Resp baru1
## 12   P4   3   23     1
## 11   P4   2   21     2
## 10   P4   1   19     3
## 9    P3   3   17     4
## 8    P3   2   15     5
## 7    P3   1   13     6
## 6    P2   3   11     7
## 5    P2   2    9     8
## 4    P2   1    7     9
## 3    P1   3    5    10
## 2    P1   2    3    11
## 1    P1   1    1    12
indeks7 <- order(data7$Kel)
data8 <- data7[indeks7,]
data8
##    Perl Kel Resp baru1
## 10   P4   1   19     3
## 7    P3   1   13     6
## 4    P2   1    7     9
## 1    P1   1    1    12
## 11   P4   2   21     2
## 8    P3   2   15     5
## 5    P2   2    9     8
## 2    P1   2    3    11
## 12   P4   3   23     1
## 9    P3   3   17     4
## 6    P2   3   11     7
## 3    P1   3    5    10

Sorting Data

data8$Resp
##  [1] 19 13  7  1 21 15  9  3 23 17 11  5
sort(data8$Resp)
##  [1]  1  3  5  7  9 11 13 15 17 19 21 23
rev(data8$Resp)
##  [1]  5 11 17 23  3  9 15 21  1  7 13 19
order(data8$Resp)
##  [1]  4  8 12  3  7 11  2  6 10  1  5  9
rank(data8$Resp)
##  [1] 10  7  4  1 11  8  5  2 12  9  6  3
data8$Resp>10
##  [1]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE
which(data8$Resp>10)
## [1]  1  2  5  6  9 10 11
data8$Resp[data8$Resp>10]
## [1] 19 13 21 15 23 17 11
data8$Resp[which(data8$Resp>10)]
## [1] 19 13 21 15 23 17 11

Recoding Data

  • Digunakan untuk membuat nilai baru dari nilai peubah yang sudah ada
  • Dapat dilakukan secara logical, fungsi ifelse(…), dan fungsi recode(…)

- Latihan 8

• Lakukanlah recoding pada data8 untuk variabel respon dengan kondisi jika respon<15 maka Code = 1, selainnya Code = 0

#dengan logical
data8$Code1 <- 0*(data8$Resp>=15) + 1*(data8$Resp<15)
#dengan fungsi ifelse
data8$Code2 <- ifelse(data8$Resp<15,1,0)
#dengan fungsi recode
library(car)
## Loading required package: carData
data8$Code3 <- recode(data8$Resp,'1:14=1; else=0')

Merging Data

  • Bisa dilakukan dengan rbind(…) atau cbind(…)
  • Lebih mudah dengan fungsi merge(…)

- Latihan 9

Gabungkanlah data1 dengan tabel1 berdasarkan peubah pertamanya

tabel1 <- data.frame(Tr=c("P4","P2", "P5"),k1=c(50,100,200))
tabel1
##   Tr  k1
## 1 P4  50
## 2 P2 100
## 3 P5 200
data9<-merge(data1, tabel1,by.x=1, by.y=1, all=FALSE)
data9
##   Perl Kel Resp baru1  k1
## 1   P2   3   11     7 100
## 2   P2   1    7     9 100
## 3   P2   2    9     8 100
## 4   P4   1   19     3  50
## 5   P4   2   21     2  50
## 6   P4   3   23     1  50
data10<-merge(data1, tabel1,by.x="Perl", by.y="Tr",all=TRUE)
data10
##    Perl  Kel Resp baru1  k1
## 1    P1    1    1    12  NA
## 2    P1    2    3    11  NA
## 3    P1    3    5    10  NA
## 4    P2    3   11     7 100
## 5    P2    1    7     9 100
## 6    P2    2    9     8 100
## 7    P3    2   15     5  NA
## 8    P3    3   17     4  NA
## 9    P3    1   13     6  NA
## 10   P4    1   19     3  50
## 11   P4    2   21     2  50
## 12   P4    3   23     1  50
## 13   P5 <NA>   NA    NA 200

Reshaping Data

  • Membentuk data baru dengan cara :
    • Long to wide format
    • Wide to long format
  • Menggunakan fungsi reshape(…)

- Latihan 10

Ubahlah data1 menjadi data dengan setiap barisnya merupakan masing-masing perlakuan

#long to wide
data11 <- reshape(data1[,-4], idvar="Perl", timevar="Kel",direction="wide")
data11
##    Perl Resp.1 Resp.2 Resp.3
## 1    P1      1      3      5
## 4    P2      7      9     11
## 7    P3     13     15     17
## 10   P4     19     21     23
#wide to long
data12 <- reshape(data11,idvar="Perl", timevar="Kel",direction="long")
data12
##      Perl Kel Resp.1
## P1.1   P1   1      1
## P2.1   P2   1      7
## P3.1   P3   1     13
## P4.1   P4   1     19
## P1.2   P1   2      3
## P2.2   P2   2      9
## P3.2   P3   2     15
## P4.2   P4   2     21
## P1.3   P1   3      5
## P2.3   P2   3     11
## P3.3   P3   3     17
## P4.3   P4   3     23

Sumber : Materi Praktikum Mata Kuliah STA561 Pemrograman Statistika