Pemrograman Statistika STA 561 - Pratikum 01
Objek Di R
Vector
## [1] 2 4 7 3
Baris Bilangan
## [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
## [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
## [1] 1 1 1
## [1] 1 2 3 1 2 3 1 2 3
## [1] 1 2 2 3 3 3
## [1] 1 1 2 2 3 3
## [1] 1 1 2 2 3 3
karakter berpola
## [1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
## [1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
## [1] "A-1" "A-2" "A-3" "A-4" "A-5" "A-6" "A-7" "A-8" "A-9" "A-10"
## [1] "A1" "A1" "A2" "A2" "A3" "A3"
akses vector
## [1] "7"
## [1] 5.5 6.0 6.5 7.0 7.5 8.0
## [1] "A4" "A7" "A9"
## [1] "A2" "A2" "A3" "A3"
## [1] 12
Latihan 1
## [1] "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye"
## [16] "la"
## [1] "la" "la" "la" "ye" "ye" "ye" "la" "la" "la" "ye" "ye" "ye"
Latihan 2
##Buatlah syntax agar dihasilkan output vektor sebagai berikut
A<-c("X1","Y2","X3","Y4","X5","Y6","X7","Y8","X9","Y10")
B<-seq(1,28,by=3)
tabel.data<-data.frame(A,B)
tabel.data## A 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
Matrix (1)
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [,1] [,2] [,3] [,4]
## [1,] 1 5 9 13
## [2,] 2 6 10 14
## [3,] 3 7 11 15
## [4,] 4 8 12 16
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 5 9 13 17
## [2,] 2 6 10 14 18
## [3,] 3 7 11 15 19
## [4,] 4 8 12 16 20
## [,1] [,2]
## [1,] 1 7
## [2,] 2 8
## [3,] 3 9
## [4,] 4 10
## [5,] 5 11
## [6,] 6 12
Matrix (2)
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
## [,1] [,2]
## [1,] 6 8
## [2,] 7 9
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
## [3,] 6 8
## [4,] 7 9
## [,1] [,2] [,3] [,4]
## [1,] 6 8 1 3
## [2,] 7 9 2 4
## [1] 4 2
## [1] 2 4
## NULL
## [1] 16
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
## , , 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
## , , 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
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
Factor
## [1] "A" "B" "AB" "O"
## [1] A B AB O
## Levels: A AB B O
## [1] "O" "A" "B" "AB"
## [1] A B AB O
## Levels: O A B AB
## [1] "SD" "SMP" "SMA"
## [1] SD SMP SMA
## Levels: SD < SMA < SMP
## [1] SD SMP SMA
## Levels: SD < SMP < SMA
## [1] SD SMP SMA
## Levels: SD < SMP < SMA
## [1] "SD" "SMP" "SMA"
List
## [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
## [[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
## $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
## [1] 2 4 7 3
## [1] A B AB O
## Levels: O A B AB
## $mat
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [[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
## NULL
## [1] 4
## [1] "vect" "mat" "array" "fac"
Data Frame
## [1] 11 12 13 14 15
## [1] F G H I J
## Levels: F G H I J
## d5 a17
## 1 F 11
## 2 G 12
## 3 H 13
## 4 I 14
## 5 J 15
akses data frame
## [1] 11
## d5 a17
## 3 H 13
## [1] F G H I J
## Levels: F G H I J
## [1] 11 12 13 14 15
## [1] "d5" "a17"
## '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
## 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!
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 Dan Struktur Kendali
Pengolahan Objek
Operasi aljabar sederhana vektor numerik
+, -, *, /, ^, %*%, %o%
## [1] 2 6 9 5
## [1] 1 2 3 4
## [1] 3 8 10 7
## Warning in x1 + 1:3: longer object length is not a multiple of shorter object
## length
## [1] 3 8 12 6
## [1] 2 12 27 20
## [,1]
## [1,] 146
## [,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(…)
## [1] "Institut Pertanian Bogor"
## [1] 24
## [1] "Adam" "Pramesti " "Fathi" "Ririn"
## [1] 4 9 5 5
## [1] "nian"
## [1] "nian Bogor"
## [1] "titut"
Operasi Dasar Matriks
t(…), %*%, %o%, diag(…), solve(…), eigen(…)
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
## [,1] [,2]
## [1,] 6 8
## [2,] 7 9
## [,1] [,2]
## [1,] 35 44
## [2,] 44 56
## [,1] [,2]
## [1,] 210 352
## [2,] 308 504
## [,1] [,2]
## [1,] 2.333333 -1.833333
## [2,] -1.833333 1.458333
## [,1] [,2]
## [1,] 1 2.842171e-14
## [2,] 0 1.000000e+00
## [,1] [,2]
## [1,] 2.333333 -1.833333
## [2,] -1.833333 1.458333
## [1] 5 11
## [1] -8.500 6.875
## eigen() decomposition
## $values
## [1] 90.7354949 0.2645051
##
## $vectors
## [,1] [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945 0.6196295
## [1] 90.7354949 0.2645051
## [,1] [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945 0.6196295
## 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) ekspresielseekspresiifelse(kondisi,ekspresi benar,ekspresi salah)switch(“kondisi”=ekspresi,…)
- Pengulangan (loops)
for(objek in sekuens) ekspresiwhile(kondisi) ekspresirepeatekspresi (untuk menghentikan gunakan perintah break)
- Tanpa pengulangan
apply(array,margin,function,function args)
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
## [1] 6.948794
## [1] 0.008212098
## [1] 0.008707018
## [1] 39.27915
## [1] 45.64883
## [1] 0.008627506
## [1] 0.009282298
## [1] 6.97191
## [1] 0.009019555
## [1] 40.82264
## [1] 0.006117215
## [1] 31.76365
## [1] 45.30366
## [1] 0.007865271
## [1] 28.08231
## [1] 0.007011155
## [1] 0.009741069
## [1] 5.50447
## [1] 22.31816
## [1] 10.83601
## [1] 9.376496
## [1] 13.14827
## [1] "t"
## [1] 55 60 65 70 75
## [1] 1.581139 1.581139 1.581139 1.581139 1.581139
Latihan 1
Tentukan hasil dari setiap perintah berikut
## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15
## [1] 2
## [1] 4
## [1] 7
## [1] 11
## [1] 16
## [1] 3
## [1] 5
## [1] 8
## [1] 12
## [1] 17
Data Wrangling Atau Manajemen Data Frame
Membuat peubah baru dalam data frame
Seorang peneliti merancang sebuah perancangan percobaan RAKL dengan 4 perlakuan dan 3 kelompok (anggaplah respon percobaan berupa baris bilangan) ,kemudian disimpan dalam objek data 1.
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
Latihan 1
Pada data1, buatlah peubah baru1 yang berisi nilai dari 12 sampai 1 secara berurutan.
## 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
## 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
## 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
## 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
## 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
## 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,]
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
## [1] 19 13 7 1 21 15 9 3 23 17 11 5
## [1] 1 3 5 7 9 11 13 15 17 19 21 23
## [1] 5 11 17 23 3 9 15 21 1 7 13 19
## [1] 4 8 12 3 7 11 2 6 10 1 5 9
## [1] 10 7 4 1 11 8 5 2 12 9 6 3
## [1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE
## [1] 1 2 5 6 9 10 11
## [1] 19 13 21 15 23 17 11
## [1] 19 13 21 15 23 17 11
Recoding data
• Digunakan untuk membuat nilai baru dari nilai peubahyang sudah ada • Dapat dilakukan secara logical, fungsi ifelse(…), dan fungsi recode(…)
Merging data
• Bisa dilakukan dengan rbind(…) atau cbind(…) • Lebih mudah dengan fungsi merge(…)
Latihan 9
Gabungkanlah data1 dengan tabel1 berdasarkan peubah pertamanya
## Tr k1
## 1 P4 50
## 2 P2 100
## 3 P5 200
## 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
## 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 towideformat - Widetolongformat • Menggunakan fungsi reshape(…)
Latihan 10
Ubahlah data1 menjadi data dengan setiap barisnya merupakan masing-masing perlakuan
## 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
## 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
## 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