LAPORAN 1 Praktikum STA561 PEMROGRAMAN STATISTIKA

Laman ini berisi materi praktikum pertemuan 1 s.d. 3 untuk Mata Kuliah STA561 Pemrograman Statistika. Materi praktikum pertama mengenai OBJEK DI R, dilanjutkan dengan materi praktikum kedua mengenai PENGOLAHAN OBJEK dan STRUKTUR KENDALI, dan materi praktikum terakhir mengenai DATA WRANGLING atau MANAJEMEN DATA FRAME.

OBJEK DI R

Vector

a1<-c(2,4,7,3)
assign("a2",c("2","4","7","3"))

#baris bilangan
(a3 <- seq(1,10,by=0.5))
##  [1]  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0  7.5  8.0
## [16]  8.5  9.0  9.5 10.0
(a4 <- seq(1,10,length.out=12))
##  [1]  1.000000  1.818182  2.636364  3.454545  4.272727  5.090909  5.909091
##  [8]  6.727273  7.545455  8.363636  9.181818 10.000000
#bilangan berulang
(a5 <- rep(1,3))
## [1] 1 1 1
(a6 <- rep(1:3,3))
## [1] 1 2 3 1 2 3 1 2 3
(a7 <- rep(1:3,1:3))
## [1] 1 2 2 3 3 3
(a8 <- rep(1:3,rep(2,3)))
## [1] 1 1 2 2 3 3
(a9 <- rep(1:3, each=2))
## [1] 1 1 2 2 3 3
#karakter berpola
(a10 <- paste("A",1:10,sep=""))
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"
(a11 <- paste0("A",1:10))
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"
(a12 <- paste("A",1:10,sep="-"))
##  [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))
## [1] "A1" "A1" "A2" "A2" "A3" "A3"
#akses vector
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

(X <- paste(c("X","Y"),c(1:10),sep=""))
##  [1] "X1"  "Y2"  "X3"  "Y4"  "X5"  "Y6"  "X7"  "Y8"  "X9"  "Y10"
(A <- seq(1,28,by=3))
##  [1]  1  4  7 10 13 16 19 22 25 28

Matrix

(a14 <-1:12)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
(b1<-matrix(a14,3,4))
##      [,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))
##      [,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]
##      [,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))
##      [,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)
##  [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))
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
(b7 <-matrix(6:9,2))
##      [,1] [,2]
## [1,]    6    8
## [2,]    7    9
(b8 <-rbind(b6,b7)) #gabung baris
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## [3,]    6    8
## [4,]    7    9
(b9 <-cbind(b7,b6)) #gabung kolom
##      [,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
#aksesmatrix
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)))
## , , 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)))
## , , 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)))
## , , 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)))
##      [,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] #lembarke 1 buku ke 3 dari c2
## [1]  9 10

Factor

(a15 <-c("A","B","AB","O"))
## [1] "A"  "B"  "AB" "O"
(d1 <-factor(a15)) #skala pengukuran nominal
## [1] A  B  AB O 
## Levels: A AB B O
(d2 <-factor(a15,levels=c("O","A","B","AB")))
## [1] A  B  AB O 
## Levels: O A B AB
levels(d2)
## [1] "O"  "A"  "B"  "AB"
(a16 <-c("SD","SMP","SMA"))
## [1] "SD"  "SMP" "SMA"
(d3 <-ordered(a16)) #skala pengukuran ordinal
## [1] SD  SMP SMA
## Levels: SD < SMA < SMP
(d4 <-ordered(a16, levels=a16))
## [1] SD  SMP SMA
## Levels: SD < SMP < SMA
(d5 <-factor(a16, levels=a16, ordered=TRUE))
## [1] SD  SMP SMA
## Levels: SD < SMP < SMA
levels(d4)
## [1] "SD"  "SMP" "SMA"
#aksesfactor
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))
## [[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))
## $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
#akseslist
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)
## [1] 11 12 13 14 15
(d5 <-factor(LETTERS[6:10]))
## [1] F G H I J
## Levels: F G H I J
(f1 <-data.frame(d5,a17))
##   d5 a17
## 1  F  11
## 2  G  12
## 3  H  13
## 4  I  14
## 5  J  15
#aksesdata 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 <- factor(paste(c("P"),(rep(1:4, each=3)),sep=""))
Kel <- c(rep(1:3,4))
Resp <- c(seq(1,23,by=2))
data1 <- data.frame(Perl,Kel,Resp)
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))
## [1] 2 6 9 5
(x2 <- 1:4)
## [1] 1 2 3 4
(x3 <- x1 + 1:2)
## [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
## [1]  3  8 12  6
(x5 <- x1*x2)
## [1]  2 12 27 20
(x6 <- x1 %*% x1) #setara x'x
##      [,1]
## [1,]  146
(x7 <- x1 %o% x1) #setara xx'
##      [,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"))
## [1] "Institut Pertanian Bogor"
(n1 <-nchar(y1))
## [1] 24
(y2 <-c("Adam","Pramesti","Fathi","Ririn"))
## [1] "Adam"     "Pramesti" "Fathi"    "Ririn"
(n2 <-nchar(y2))
## [1] 4 8 5 5
(y3 <-substr(y1,15,18)) #”nian”
## [1] "nian"
(y4 <-substring(y1,15)) #”nian Bogor”
## [1] "nian Bogor"
(y5 <-substring(y1,4,8)) #”titut”
## [1] "titut"
  • Operasi dasar matriks: t(…), %*%, %o%, diag(…), solve(…), eigen(…)
(Z1 <- matrix(1:6,2,3))
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
(Z2 <- matrix(1:6,3,2,byrow=T))
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
(Z3 <- matrix(6:9,2,2))
##      [,1] [,2]
## [1,]    6    8
## [2,]    7    9
(Z4 <- Z1 %*% Z2)
##      [,1] [,2]
## [1,]   35   44
## [2,]   44   56
(Z5 <- Z3 * Z4)
##      [,1] [,2]
## [1,]  210  352
## [2,]  308  504
(INVZ <- solve(Z4)) #invers
##           [,1]      [,2]
## [1,]  2.333333 -1.833333
## [2,] -1.833333  1.458333
(INVZ %*% Z4) #identitas
##      [,1]         [,2]
## [1,]    1 2.842171e-14
## [2,]    0 1.000000e+00
(h <-c(5,11))
## [1]  5 11
(p <-solve(Z4,h)) #solusi SPL Zp=h
## [1] -8.500  6.875
(e <-eigen(Z4)) #eigen value & eigen vector dr Z4
## 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

Struktur Kendali

Eksekusi Bersyarat

  • if (kondisi) ekspresi else ekspresi
  • ifelse (kondisi, ekspresi benar, ekspresi salah)
  • switch (“kondisi”=ekspresi,…)

Pengulangan (loops)

  • for (objekin sekuens) ekspresi
  • while (kondisi) ekspresi
  • repeat ekspresi (untuk menghentikan gunakan perintah break)

Tanpa Pengulangan

  • apply (array, margin, function, function args)

Contoh Penggunaan:

for (i in 1:5) print (i^2)
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
i < -1
## [1] FALSE
  while (i<=5) {
  print(i^2)
  i=i+1
}
## [1] 25
y= runif(20)
  for (i in y) {
    if(i<0.5){
      print(100*i)
    } else print (i/100)
}
## [1] 28.65652
## [1] 25.23834
## [1] 36.71204
## [1] 36.86776
## [1] 0.007730371
## [1] 48.36642
## [1] 0.007924598
## [1] 23.65213
## [1] 0.007975603
## [1] 32.4581
## [1] 36.76634
## [1] 18.41362
## [1] 0.009447678
## [1] 0.007370096
## [1] 0.008614107
## [1] 20.86714
## [1] 42.42411
## [1] 45.96823
## [1] 0.007861199
## [1] 3.881722
z = 0
  while(z<=10) {
    y=runif(20)
    z=sum(y)
    print(z)
}
## [1] 10.95119
(acak <- sample(1:5,1))
## [1] 2
switch(EXPR = acak, "1" = "a", "2" = "z",
"3" = "m", "4" = "h", "5" = "t")
## [1] "z"
(Z6 <-matrix(1:25,5,5))
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    6   11   16   21
## [2,]    2    7   12   17   22
## [3,]    3    8   13   18   23
## [4,]    4    9   14   19   24
## [5,]    5   10   15   20   25
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 perintah berikut:

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

DATA WRANGLING (MANAJEMEN DATA FRAME)

Berikut data yang digunakan pada materi data wrangling 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

Membuat Peubah Baru

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

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…

  • Dari data1 tersebut ambillah yang termasuk kelompok 1
indeks1 <-data1$Kel == 1
(data2 <-data1[indeks1,])
##    Perl Kel Resp baru1
## 1    P1   1    1    12
## 4    P2   1    7     9
## 7    P3   1   13     6
## 10   P4   1   19     3
  • Dari data1 tersebut ambillah yang termasuk kelompok 1 atau perlakuan P2
indeks2 <-data1$Kel == 1 | data1$Perl == "P2"
(data3 <-data1[indeks2,])
##    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
  • 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,])
##    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(…)

  • Urutkan data1 tersebut berdasarkan kelompok secara ascending
indeks4 <-order(data1$Kel)
(data5 <-data1[indeks4,])
##    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
  • Urutkan data1 tersebut berdasarkan kelompok dan respon secara descending
indeks5 <-order(data1$Kel, data1$Resp, decreasing=TRUE)
(data6 <-data1[indeks5,])
##    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
  • Urutkan data1 tersebut berdasarkan kelompok secara ascending dan respon secara descending
indeks6 <-order(data1$Resp, decreasing=TRUE)
data7 <-data1[indeks6,]
indeks7 <-order(data7$Kel)
(data8 <-data7[indeks7,])
##    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

Re-coding Data

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

  • 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))
##  [1] 0 1 1 1 0 0 1 1 0 0 1 1
#dengan fungsi ifelse
(data8$Code2 <-ifelse(data8$Resp<15,1,0))
##  [1] 0 1 1 1 0 0 1 1 0 0 1 1
#dengan fungsi recode
library(car)
## Loading required package: carData
(data8$Code3 <-recode(data8$Resp,'1:14=1; else=0'))
##  [1] 0 1 1 1 0 0 1 1 0 0 1 1

Merging Data

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

  • Gabungkanlah data1 dengan tabel1 berdasarkan peubah pertamanya
tabel1 <-data.frame( Tr=c("P4","P2","P5"), k1=c(50,100,200))
data9<-merge(data1, tabel1, by.x=1, by.y=1, all=FALSE)
data10<-merge(data1, tabel1, by.x="Perl",by.y="Tr",all=TRUE)
tabel1
##   Tr  k1
## 1 P4  50
## 2 P2 100
## 3 P5 200

Reshaping Data

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

  • Ubahlah data1 menjadi data dengan setiap barisnya merupakan masing-masing perlakuan
#long to wide
(data11 <-reshape(data1[,-4], idvar="Perl", timevar="Kel", direction="wide"))
##    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"))
##      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 pada laman ini bersumber dari Materi Praktikum Mata Kuliah STA561 Pemrograman Statistika