Tugas Praktikum Pertama STA561 Pemrograman Statistika
Klik disini untuk ke halaman rpubs.
Praktikum Pertemuan Pertama
Pada praktikum pertemuan pertama, saya melakukan instalasi LINUX Ubuntu 20.04 LTS di PC.
Selain itu, saya juga mempraktekkan algortima dalam penukaran uang di vending machine seperti yang ada di slide kuliah STA561 tentang algoritma dan pemrograman berikut:
Misalkan akan dibuat algoritma kembalian uang dari suatu vending machine. Pecahan uang yang tersedia pada mesin tersebut terdiri dari pecahan 20, 10, dan 5.
Untuk keperluan ini, digunakan diagram alir untuk algoritmanya. Asumsi dalam algoritma ini adalah pecahan 20ribu, 10ribu, dan 5ribu yang tersedia di vending machine tidak terbatas. Misalnya kita punya uang sebanyak 75 ribu. Berapa banyak uang pecahan yang kita terima?
Berikut algoritmanya:
#Algoritma Penukaran Uang di vending machine
x<- 75
i<- 0
y<-x-20
while(y>=0){
i <- i+1
x <- y
y <- y-20
}
j <-0
y <-x-10
while(y>=0){
j <-j+1
x <-y
y <-y-10
}
k <-0
y <-x-5
while(y>=0){
k <-k+5
x <-y
y <-y-5
}print(paste("Banyak Uang pecahan 20ribu yang kita terima adalah",i,"lembar"))## [1] "Banyak Uang pecahan 20ribu yang kita terima adalah 3 lembar"
print(paste("Banyak Uang pecahan 10ribu yang kita terima adalah",j,"lembar"))## [1] "Banyak Uang pecahan 10ribu yang kita terima adalah 1 lembar"
print(paste("Banyak Uang pecahan 5ribu yang kita terima adalah", k, "lembar"))## [1] "Banyak Uang pecahan 5ribu yang kita terima adalah 5 lembar"
Praktikum Pertemuan Kedua (Objek di R)
R merupakan suatu bahasa pemrograman berorientasi objek untuk pengolahan statistik dan grafik.
Objek Data dalam R memiliki mode:
- numeric
Contoh: 12, 2.3, 1.2e-2
- complex
Contoh: 1.2e6+2i
- character
Contoh: 'ipb', "statistika"
- logical
Contoh: T, F, TRUE, FALSE
Pada praktikum kali ini saya mencoba untuk mengenal objek data di R dengan menggunakan beberapa mode objek.
Adapun objek data standar di R yang akan saya praktikkan di sini:
Vector
Matrix
Array
Factor
List
Data Frame
Vector
Vektor merupakan tipe sederhana dari objek data dalam R dan hampir digunakan oleh semua fungsi aritmetik. Mode anggota/elemen adalah sama.
#vector dengan data numeric dan character
bulan <- c(1,2,3,4,5,6,7,8,9,10,11,12)
print("bulan:")## [1] "bulan:"
bulan## [1] 1 2 3 4 5 6 7 8 9 10 11 12
assign("hari",c("Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu","Minggu"))
print("nama hari:")## [1] "nama hari:"
hari## [1] "Senin" "Selasa" "Rabu" "Kamis" "Jum'at" "Sabtu" "Minggu"
#vector yang merupakan baris bilangan
desimal <- seq(1,2,by=0.25)
print("desimal:")## [1] "desimal:"
desimal## [1] 1.00 1.25 1.50 1.75 2.00
jarak <- seq(1,2,length.out=4)
jarak## [1] 1.000000 1.333333 1.666667 2.000000
#vector yang merupakan bilangan berulang
a5 <- rep(1,3)
a6 <- rep(2:4,4)
a7 <- rep(5:8,1:4)
a8 <- rep(1:5,rep(2,5))
a9 <- rep(9:10,each=2)
print("Berulang:")## [1] "Berulang:"
a5## [1] 1 1 1
a6## [1] 2 3 4 2 3 4 2 3 4 2 3 4
a7## [1] 5 6 6 7 7 7 8 8 8 8
a8## [1] 1 1 2 2 3 3 4 4 5 5
a9## [1] 9 9 10 10
#vector yang merupakan karakter berpola
a10 <- paste("A",1:5,sep="")
a10## [1] "A1" "A2" "A3" "A4" "A5"
a11 <- paste0("A",1:5)
a11## [1] "A1" "A2" "A3" "A4" "A5"
a12 <- paste("A",1:5,sep="-")
a12## [1] "A-1" "A-2" "A-3" "A-4" "A-5"
a13 <- paste0("A",a10)
a13## [1] "AA1" "AA2" "AA3" "AA4" "AA5"
#akses vector
a10[3]## [1] "A3"
a10[1:4]## [1] "A1" "A2" "A3" "A4"
a10[c(1,3,5)]## [1] "A1" "A3" "A5"
a13[-c(1:2)]## [1] "AA3" "AA4" "AA5"
length(a10)## [1] 5
Latihan 1
Tentukan output syntax program berikut:
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
l2.1<-c("X","Y")
l2.1<-rep(l2.1,5)
l2.2<-rep(1:10)
l2.3<-seq(1,28,by=3)
l2.4<-paste0(l2.1,l2.2)
l2.4<-factor(l2.4)
factor(paste0(rep(c("X","Y"),5),1:10))## [1] X1 Y2 X3 Y4 X5 Y6 X7 Y8 X9 Y10
## Levels: X1 X3 X5 X7 X9 Y10 Y2 Y4 Y6 Y8
seq(1,28,by=3)## [1] 1 4 7 10 13 16 19 22 25 28
Matrix
Matrix merupakan tipe dari objek data dalam R dua dimensi bentuk n baris x p kolom.
a14 <- 1:12
a14## [1] 1 2 3 4 5 6 7 8 9 10 11 12
b1 <- matrix(a14,3,4)
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)
b2## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
b3 <- matrix(1:12,4,4)
b3## [,1] [,2] [,3] [,4]
## [1,] 1 5 9 1
## [2,] 2 6 10 2
## [3,] 3 7 11 3
## [4,] 4 8 12 4
b4 <- matrix(1:10,4,5)
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
b5## [1] 1 2 3 4 5 6 7 8 9 10 11 12
dim(b5)<-c(1,12) #merubah objek vector ke matrix
print(dim(b5))## [1] 1 12
b6 <- matrix(1:4,2)
b6## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
b7 <- matrix(6:9,2)
b7## [,1] [,2]
## [1,] 6 8
## [2,] 7 9
b6 <- matrix(1:4,2)
b7 <- matrix(6:9,2)
b8 <- rbind(b6,b7) #gabung baris
b8## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
## [3,] 6 8
## [4,] 7 9
b6 <- matrix(1:4,2)
b7 <- matrix(6:9,2)
b9 <- cbind(b7,b6) #gabung kolom
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
#akses matrix
b2[2,3]## [1] 7
#akses matrix
b2[2,2:4]## [1] 6 7 8
#akses matrix
b2[1:2,]## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
#akses matrix
b2[c(1,3),-2]## [,1] [,2] [,3]
## [1,] 1 3 4
## [2,] 9 11 12
#akses matrix
b2[10]## [1] 4
Array
Array merupakan objek seperti matriks dengan dimensi lebih banyak. Jika matriks hanya mempunyai 2 dimensi, maka array dapat memiliki lebih dari 2 dimensi.
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
#akses array
c2[,,,2] #buku ke 2 dari c2## [,1] [,2]
## [1,] 5 7
## [2,] 6 8
#akses array
c2[,,1,] #lembar 1 dari c2## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
#akses array
c2[,,1,3] #lembar ke 1 buku ke 3 dari c2## [1] 9 10
Factor
Factor merupakan vektor dengan anggota/elemennya berupa kategori.
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
List merupakan vektor dengan anggota/elemennya berupa objek
a6## [1] 2 3 4 2 3 4 2 3 4 2 3 4
b2## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
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
d2## [1] A B AB O
## Levels: O A B AB
e1 <- list(a6,b2,c1,d2)
e1## [[1]]
## [1] 2 3 4 2 3 4 2 3 4 2 3 4
##
## [[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=a6,mat=b2,array=c1,fac=d2)
e2## $vect
## [1] 2 3 4 2 3 4 2 3 4 2 3 4
##
## $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 3 4 2 3 4 2 3 4 2 3 4
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
Data Frame merupakan data dalam format tabel. Semua anggota dalam satu kolom memiliki mode yang sama. Antar kolom dapat memiliki mode berbeda.
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
#akses data frame
f1[3,]## d5 a17
## 3 H 13
#akses data frame
f1$d## [1] F G H I J
## Levels: F G H I J
#akses data frame
f1[,"a17"]## [1] 11 12 13 14 15
#akses data frame
colnames(f1)## [1] "d5" "a17"
#akses data frame
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
#akses data frame
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). Raw datanya sebagai berikut:
Perl<-paste0("P", rep(1:4,each=3))
Perl## [1] "P1" "P1" "P1" "P2" "P2" "P2" "P3" "P3" "P3" "P4" "P4" "P4"
Kel<-factor(rep(1:3,4))
Kel## [1] 1 2 3 1 2 3 1 2 3 1 2 3
## Levels: 1 2 3
Resp<-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
Praktikum Pertemuan Kedua (Pengolahan Objek dan Struktur Kendali)
Pada praktikum kali ini saya mencoba untuk melakukan Pengolahan Objek dan 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:4
x4## [1] 3 8 12 9
x5 <- x1*x2
x5## [1] 2 12 27 20
x6 <- x1 %*% x1 #setara x'x
x6## [,1]
## [1,] 146
x7 <- x1 %o% x1 #setara xx'
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 8 5 5
y1 <- c("Institut Pertanian Bogor")
y1## [1] "Institut Pertanian Bogor"
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
INVZ <- solve(Z4) #invers
INVZ## [,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)
h## [1] 5 11
p <- solve(Z4,h) #solusi SPL Zp=h
p## [1] -8.500 6.875
e <- eigen(Z4) #eigen value & eigen vector dr Z4
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 (objek in sekuens) ekspresi
while (kondisi) ekspresi
repeat ekspresi (untuk menghentikan gunakan perintah break)
Tanpa pengulangan:
- apply(array, margin, function, function args)
for (i in 1:5) print(i^2)## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
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] 0.005071898
## [1] 44.12653
## [1] 0.008073927
## [1] 46.18577
## [1] 0.005337826
## [1] 0.006939485
## [1] 38.26721
## [1] 0.009628274
## [1] 0.8662875
## [1] 0.006635065
## [1] 9.83886
## [1] 0.006373591
## [1] 0.007678556
## [1] 32.95674
## [1] 44.99186
## [1] 2.731847
## [1] 26.12582
## [1] 4.595138
## [1] 6.612229
## [1] 0.005400432
z=0
while(z<=10) {
y=runif(20)
z=sum(y)
print(z)
}## [1] 10.50462
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:
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
Praktikum Pertemuan Ketiga (Manajemen Data Frame)
Manajemen Data Frame (Data Wrangling/Munging):
- Membuat peubah baru dalam data frame
- Subsetting data
- Sorting data
- Recoding data
- Merging data
- Reshaping data
Contoh:
Seorang peneliti merancang sebuah perancangan percobaan RAKL dengan 4 perlakuan dan 3 kelompok (anggaplah respon percobaan berupa baris bilangan), kemudian disimpan dalam objek data1.
#Input Data
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)
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
Membuat Peubah Baru dalam Data Frame
Dilakukan seperti membuat vektor (dengan indeks atau operasi seleksi):
namadataframe$namavariabelbaru<-ekspresi
namadataframe[,nomorkolom]<-ekspresi
Latihan 1
Pada data1, buatlah peubah 'baru1' yang berisi nilai dari 12 sampai 1 secara berurutan.
#membuat peubah 'baru1'
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. Kita membuat ide logic untuk diterapkan dalam vektor logic yang diinginkan.
Adapun Fungsi yang digunakan : ==, !=, >, >=, <, <=, %in%, duplicated(.), which(.) , is.na(.), is.null(.), is.numeric(.), dll.
Latihan 2
Dari data1 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 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 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 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 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 berdasarkan kelompok secara ascending dan respon secara descending
indeks6 <- order(data1$Resp,
decreasing=TRUE)
data7 <- data1[indeks6,]
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
#sorting data
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
#sorting data
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)
data8## Perl Kel Resp baru1 Code1
## 10 P4 1 19 3 0
## 7 P3 1 13 6 1
## 4 P2 1 7 9 1
## 1 P1 1 1 12 1
## 11 P4 2 21 2 0
## 8 P3 2 15 5 0
## 5 P2 2 9 8 1
## 2 P1 2 3 11 1
## 12 P4 3 23 1 0
## 9 P3 3 17 4 0
## 6 P2 3 11 7 1
## 3 P1 3 5 10 1
#dengan fungsi ifelse
data8$Code2 <- ifelse(data8$Resp<15,1,0)
data8## Perl Kel Resp baru1 Code1 Code2
## 10 P4 1 19 3 0 0
## 7 P3 1 13 6 1 1
## 4 P2 1 7 9 1 1
## 1 P1 1 1 12 1 1
## 11 P4 2 21 2 0 0
## 8 P3 2 15 5 0 0
## 5 P2 2 9 8 1 1
## 2 P1 2 3 11 1 1
## 12 P4 3 23 1 0 0
## 9 P3 3 17 4 0 0
## 6 P2 3 11 7 1 1
## 3 P1 3 5 10 1 1
##dengan fungsi recode
library(car)## Loading required package: carData
data8$Code3 <- recode(data8$Resp,'1:14=1; else=0')
data8## Perl Kel Resp baru1 Code1 Code2 Code3
## 10 P4 1 19 3 0 0 0
## 7 P3 1 13 6 1 1 1
## 4 P2 1 7 9 1 1 1
## 1 P1 1 1 12 1 1 1
## 11 P4 2 21 2 0 0 0
## 8 P3 2 15 5 0 0 0
## 5 P2 2 9 8 1 1 1
## 2 P1 2 3 11 1 1 1
## 12 P4 3 23 1 0 0 0
## 9 P3 3 17 4 0 0 0
## 6 P2 3 11 7 1 1 1
## 3 P1 3 5 10 1 1 1
Merging Data
Bisa dilakukan dengan rbind(.) atau cbind(.).
Lebih mudah dengan fungsi merge(.)
Latihan 9
Gabungkanlah data1 dengan tabel1 berdasarkan peubah pertamanya
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
Tr<-c("P4","P2","P5")
k1<-c(50,100,200)
tabel1<-data.frame(Tr,k1)
tabel1## Tr k1
## 1 P4 50
## 2 P2 100
## 3 P5 200
#Menggabungkan data1 dengan tabel1 berdasarkan peubah pertamanya.
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
#Menggabungkan data1 dengan tabel1 berdasarkan peubah pertamanya.
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 atau 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
TERIMA KASIH
Tugas Praktikum 1 STA561 Pemrograman Statistika, Reni Amelia, Mahasiswa Pascasarjana Statistika dan Sains Data, IPB University, reniamelia@apps.ipb.ac.id↩