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
## [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
## [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
## [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"
## [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
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)]
## [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:
X1 Y2 X3 Y4 X5 Y6 X7 Y8 X9 Y10
1 4 7 10 13 16 19 22 25 28
## [1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"
## [1] 1 4 7 10 13 16 19 22 25 28
Matrix
## [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
## 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
## [,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
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
## [1] 6 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
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [1] 7
## [1] 6 7 8
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [,1] [,2] [,3]
## [1,] 1 3 4
## [2,] 9 11 12
## [1] 4
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
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [,1] [,2]
## [1,] 5 7
## [2,] 6 8
## [1] 9 10
Factor
## [1] "A" "B" "AB" "O"
## [1] A B AB O
## Levels: A AB B O
## [1] A B AB O
## Levels: O A B AB
## [1] "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"
## [1] B
## Levels: A AB B O
## [1] SMP SMA
## Levels: 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
## [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
## [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!
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%
## [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 8 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] 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
Struktur Kendali
Eksekusi Bersyarat
if(kondisi) ekspresielseekspresiifelse(kondisi, ekspresi benar, ekspresi salah)switch(“kondisi”=ekspresi,…)
Pengulangan (loops)
for(objekin sekuens) ekspresiwhile(kondisi) ekspresirepeatekspresi (untuk menghentikan gunakan perintahbreak)
Tanpa Pengulangan
apply(array,margin,function,function args)
Contoh Penggunaan:
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
## [1] FALSE
## [1] 25
## [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
## [1] 10.95119
## [1] 2
## [1] "z"
## [,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
## [1] 55 60 65 70 75
## [1] 1.581139 1.581139 1.581139 1.581139 1.581139
Latihan 1
Tentukan hasil dari 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 (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
## 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
data1tersebut 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
- Dari
data1tersebut 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
- Dari
data1tersebut 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(…)
- Urutkan
data1tersebut 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
- Urutkan
data1tersebut 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
- Urutkan
data1tersebut 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
## [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
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
data8untuk variabel respon dengan kondisi jikarespon < 15makaCode= 1, selainnyaCode= 0
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
## Loading required package: carData
## [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
data1dengan 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
data1menjadi data dengan setiap barisnya merupakan masing-masing perlakuan
## 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
SUMBER
Materi pada laman ini bersumber dari Materi Praktikum Mata Kuliah STA561 Pemrograman Statistika