Pertemuan 1 : Pengantar Algoritma Pemrograman
Syarat Algoritma yang baik :Algoritma adalah
urutan instruksiatau langkah-langkah yang harus dilakukan untuk menyelesaikan masalah
5 ciri algoritma
Struktur Algoritma
Pertemuan 2 : Algoritma Pemrograman dalam Bahasa R
Simbol dalam R
Tanda “>” adalah prompt yang menunjukkan bahwa R sedang dalam posisi siap menerima perintah baru. Jika perintah belum lengkap, maka tanda akan berubah menjadi “+”
## [1] 6
Assignment
A <- 1 artinya A didefinisikan sebagai angka 1
## nilai A adalah = 1
Operator Assigment lainnya :
| Operator | Cakupan |
|---|---|
| <- | lokal/global |
| -> | lokal/global |
| <<- | global |
| ->> | global |
Case Sensitive
Dalam R A=1 akan berbeda dengan a=10
## nilai A adalah = 1 dan nilai a adalah = 10
Aturan penamaan objek
Objek di R
Vector
Vector adalah objek data paling sederhana yang ada di dalam R. Secara umum jenis vector terbagi 2, yaitu numeric dan character. Ada banyak sekali cara untuk membuat sebuah vector di R. Di bagian ini akan dibahas beberapa cara yang banyak dan mungkin akan sering Anda gunakan.
Fungsi yang paling sering digunakan untuk membuat sebuah vector adalah dengan menggunakan fungsi c()
#Membuat vektor numerik sederhana
x <- c(1,2,3,4,5)
#Membuat vektor numerik berurutan meningkat dan menurun dengan semicolon
y <- 1:10
#Membuat vektor berurutan dengan increment tertentu
z <- seq(1, 15, length.out = 3) #default by=1, length out : banyak elemen
#Membuat vektor karakter berpola
w <- paste("A",1:7,sep="-")Hasil Vektor
## Vektor numerik sederhana : 1 2 3 4 5
## Vektor numerik berurutan meningkat dan menurun : 1 2 3 4 5 6 7 8 9 10
## Vektor numerik berurutan dengan incremen tertentu : 1 8 15
## Vektor karakter berpola : A-1 A-2 A-3 A-4 A-5 A-6 A-7
## Output syntax 1= la ye ye la la ye ye la la ye ye la la ye ye la
## Output syntax 2 = la la la ye ye ye la la la ye ye ye
## [1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"
## [1] 1 4 7 10 13 16 19 22 25 28
Matrix
Matriks adalah objek di R yang memiliki 2 dimensi, baris (row) dan kolom (column), dan tipe nilainya sama. Jika ketika membuat sebuah matriks elemennya memiliki minimal 1 elemen bertipe character maka seluruh matriks tersebut akan bertipe character. Membuat matriks di R menggunakan vector yang dikonversi dimensinya.
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Argumen byrow = TRUE artinya matriks akan setiap elemen vek diisikan ke m memenuhi baris terlebih dahulu. Jika byrow = FALSE maka setiap elemen vek diisikan ke m berdasarkan kolom terlebih dahulu.
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 2 3 4 5
## [2,] 6 7 8 9 10
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Merubah objek vektor ke matriks
## [1] 32
Karena vector tersebut memiliki 32 elemen, maka dimensi matriks yang dapat dibuat adalah 2 angka yang hasil perkaliannya menghasilkan nilai 32. Salah satunya adalah 8 x 4 = 32.
## [,1] [,2] [,3] [,4]
## [1,] 21.0 22.8 14.7 19.2
## [2,] 21.0 19.2 32.4 27.3
## [3,] 22.8 17.8 30.4 26.0
## [4,] 21.4 16.4 33.9 30.4
## [5,] 18.7 17.3 21.5 15.8
## [6,] 18.1 15.2 15.5 19.7
## [7,] 14.3 10.4 15.2 15.0
## [8,] 24.4 10.4 13.3 21.4
Untuk mengakses elemen dari suatu matriks, dapat menggunakan indeks dari baris atau kolomnya.
## [1] 21.4 16.4 33.9 30.4
## [1] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3
## [1] 33.9
R menyediakan sebuah fungsi yaitu diag() untuk mengakses nilai-nilai pada diagonal utama sebuah matriks.
## [1] 21.0 19.2 30.4 30.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.
Ilustrasi array 3 dimensi:
Salah satu array yang ada setelah diinstall di R adalah array Titanic.
## , , Age = Child, Survived = No
##
## Sex
## Class Male Female
## 1st 0 0
## 2nd 0 0
## 3rd 35 17
## Crew 0 0
##
## , , Age = Adult, Survived = No
##
## Sex
## Class Male Female
## 1st 118 4
## 2nd 154 13
## 3rd 387 89
## Crew 670 3
##
## , , Age = Child, Survived = Yes
##
## Sex
## Class Male Female
## 1st 5 1
## 2nd 11 13
## 3rd 13 14
## Crew 0 0
##
## , , Age = Adult, Survived = Yes
##
## Sex
## Class Male Female
## 1st 57 140
## 2nd 14 80
## 3rd 75 76
## Crew 192 20
Untuk mengetahui ukuran dimensi dari sebuah array Titanic dapat menggunakan fungsi dim().
## [1] 4 2 2 2
Artinya array Titanic adalah array 4 dimensi.
Membuat array sederhana
## , , 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
Cara mengakses array
Array :
## , , 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] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [,1] [,2]
## [1,] 5 7
## [2,] 6 8
## [1] 9 10
Factor
Factor merupakan bentuk lebih luas dari vector. Biasanya factor lebih sering digunakan untuk menyimpan data
nominal atau ordinal. Misalnya vector character yang berisi “male” dan “female”. Pada vector character, nilainya adalah “male” dan “female” seperti terlihat apa adanya. Namun pada factor, tampilan dari isi datanya mungkin “male” dan “female” tetapi isi dari factor adalah pengkodean numerik. Misal untuk “female” nilai sebenarnya adalah 1, sedangkan “male” berniali 2.
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD SMA SMP
Nilai sebenarnya dari vektor tersebut adalah :
## [1] 1 2 3 3 1 2 1 3
Factor mempunyai level, secara default levelnya adalah berdasarkan urutan alfabet. Untuk merubah level dari sebuah factor, gunakan argumen levels =.
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD SMP SMA
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD < SMP < SMA
Cara mengakses factor
## [1] SMA
## Levels: SD SMP SMA
## [1] SMA SMP
## Levels: SD SMP SMA
List
Objek list pada dasarnya mirip seperti vector, hanya saja
tipe elemennya bisa berbeda. Jika pada vector numeric semua elemennya harus berupa numerik. Pada vector character semuanya harus karakter. Pada objek list elemennya dapat berupa vector, factor, matriks, array, dataframe, bahkan list di dalam list atau objek lain seperti model prediktif yang dibuat di R.
Contoh membuat list dengan fungsi list().
## [[1]]
## [1] 2
##
## [[2]]
## [1] "A"
##
## [[3]]
## [1] 4 5 2
##
## [[4]]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## $vect
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4
##
## $mat
## [,1] [,2] [,3] [,4]
## [1,] 21.0 22.8 14.7 19.2
## [2,] 21.0 19.2 32.4 27.3
## [3,] 22.8 17.8 30.4 26.0
## [4,] 21.4 16.4 33.9 30.4
## [5,] 18.7 17.3 21.5 15.8
## [6,] 18.1 15.2 15.5 19.7
## [7,] 14.3 10.4 15.2 15.0
## [8,] 24.4 10.4 13.3 21.4
##
## $array
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
##
## $fac
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD SMP SMA
Cara mengakses list
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD SMP SMA
## $mat
## [,1] [,2] [,3] [,4]
## [1,] 21.0 22.8 14.7 19.2
## [2,] 21.0 19.2 32.4 27.3
## [3,] 22.8 17.8 30.4 26.0
## [4,] 21.4 16.4 33.9 30.4
## [5,] 18.7 17.3 21.5 15.8
## [6,] 18.1 15.2 15.5 19.7
## [7,] 14.3 10.4 15.2 15.0
## [8,] 24.4 10.4 13.3 21.4
## $mat
## [,1] [,2] [,3] [,4]
## [1,] 21.0 22.8 14.7 19.2
## [2,] 21.0 19.2 32.4 27.3
## [3,] 22.8 17.8 30.4 26.0
## [4,] 21.4 16.4 33.9 30.4
## [5,] 18.7 17.3 21.5 15.8
## [6,] 18.1 15.2 15.5 19.7
## [7,] 14.3 10.4 15.2 15.0
## [8,] 24.4 10.4 13.3 21.4
##
## $fac
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD SMP SMA
## NULL
## [1] 4
## [1] "vect" "mat" "array" "fac"
Data Frame
Dataframe layaknya sebuah
tabeldi Ms Excel, terdiri daribaris dan kolomdengan nama masing-masing kolom berbeda. Apa bedanya dengan matriks? Matriks hanya bisa menyimpan tipe data yang sama, numeric atau character seluruhnya. Pada dataframe,masing-masing kolom boleh memiliki tipe data yang berbeda. Dataframe seperti umumnya bentuk tabel yang sering kita gunakan.
Contoh dataframe yang ada di dalam R salah satunya adalah mtcars.
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
Cara membuat data frame
## huruf angka
## 1 A 1
## 2 B 2
## 3 C 3
## 4 D 4
## 5 E 5
## 6 F 6
## 7 G 7
## 8 H 8
## 9 I 9
## 10 J 10
Cara Akses Data Frame
## [1] 1
## huruf angka
## 3 C 3
## [1] A B C D E F G H I J
## Levels: A B C D E F G H I J
## [1] 1 2 3 4 5 6 7 8 9 10
## [1] "huruf" "angka"
## 'data.frame': 10 obs. of 2 variables:
## $ huruf: Factor w/ 10 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10
## $ angka: int 1 2 3 4 5 6 7 8 9 10
## huruf angka
## A :1 Min. : 1.00
## B :1 1st Qu.: 3.25
## C :1 Median : 5.50
## D :1 Mean : 5.50
## E :1 3rd Qu.: 7.75
## F :1 Max. :10.00
## (Other):4
Perl <- paste("P",rep(1:4,each=3),sep="")
Kel <- factor(rep(1:3,4))
Resp <- seq(1,23,by=2)
df2 <- data.frame(Perl,Kel,Resp)
df2## 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
Operasi Aljabar
Operasi aljabar sederhana vektor numerik dapat menggunakan "+,-, * , / , ^ , %*% ,%o%"
## x1 : 2 4 6 8 10 dan x2 : 1 2 3 4 5
## Warning in x1 + 1:2: longer object length is not a multiple of shorter object
## length
## Warning in x1 + 1:3: longer object length is not a multiple of shorter object
## length
## [1] 3 6 7 10 11
## [1] 3 6 9 9 12
## [1] 2 8 18 32 50
## [,1]
## [1,] 220
## [,1] [,2] [,3] [,4] [,5]
## [1,] 4 8 12 16 20
## [2,] 8 16 24 32 40
## [3,] 12 24 36 48 60
## [4,] 16 32 48 64 80
## [5,] 20 40 60 80 100
Penggunaan substr() dan substring()
substr mengambil elemen ke-k sampai elemen ke k+n
## [1] "Statistika"
Substring mengambil elemen ke-k sampai akhir atau dengan batas yang sudah ditentukan
## [1] "Sains Data"
## [1] "Sains"
Operasi dasar matriks
Invers Matriks
z1 <- matrix(1:6,2,3) #matriks 2x3
z2 <- matrix(1:6,3,2,byrow=T) #matriks 3x2
z3 <- z1 %*% z2 # matriks X'X
invZ <- solve(z3)
invZ## [,1] [,2]
## [1,] 2.333333 -1.833333
## [2,] -1.833333 1.458333
Matriks Identitas
## [,1] [,2]
## [1,] 1 2.842171e-14
## [2,] 0 1.000000e+00
Solusi SPL Zp=h
## [1] -8.500 6.875
Eigen Value dan Eigen Factor
## [1] 90.7354949 0.2645051
## [,1] [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945 0.6196295
Struktur Kendali
if() dan ifelse()
if(kondisi) ekspresi else ekspresi ifelse (kondisi, ekspresi benar, ekspresi salah)
## [1] "Salah"
switch()
switch(“kondisi”=ekspresi,…)
## [1] "a"
for()
for (object in sekuens) ekspresi
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
while()
while (kondisi) ekspresi
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
repeat()
repeat ekspresi (untuk menghentikan gunakan break)
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
Tanpa perulangan
apply (array, margin, function, function args)
## [1] 55 60 65 70 75
## [1] 1.581139 1.581139 1.581139 1.581139 1.581139
## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15
## [1] 0
## [1] 2
## [1] 5
## [1] 9
## [1] 14
## [1] 20
## [1] -3
## [1] -1
## [1] -2
## [1] 0
## [1] -1
## [1] 1
## [1] 0
## [1] 2
## [1] 1
## [1] 3
## [1] 2
## [1] 4
## [1] 3
## [1] 5
## [1] 4
## [1] 6
## [1] 5
## [1] 7
## [1] 6
## [1] 8
## [1] 7
## [1] 9
## [1] 8
## [1] 10
## [1] 9
## [1] 11
## [1] 10
## [1] 12
## [1] 11
## [1] 13
## [1] 12
## [1] 14
## [1] 13
## [1] 15
## [1] 14
## [1] 16
Pertemuan 3 : Wrangling / Munging
Membuat peubah baru
Seperti membuat vektor (dengan indeks atau operasi seleksi). namadataframe$variabelbaru <- ekspresi namadataframe[,nomorkolom] <- ekpresi
Perlu diperhatikan jika menggunakan nomor kolom, harus memperhatikan kolom yang masih belum dipakai agar tidak menimpa kolom yang sudah ada
Akan digunakan data frame (df2) yang telah dibuat sebelumnya dan ditambahkan 1 kolom yaitu angka berurutan menurun dari 12 ke 1 dengan nama kolom Resp2
## Perl Kel Resp Resp2
## 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
Digunakan untuk akses sebagian data dengan logika yang sesuai untuk diterapkan pada hasil
Dari data frame (df2) akan diambil hanya yang termasuk kelompok 1
## Perl Kel Resp Resp2
## 1 P1 1 1 12
## 4 P2 1 7 9
## 7 P3 1 13 6
## 10 P4 1 19 3
Dari data frame (df2) akan diambil hanya yang termasuk kelompok 1 dan perlakuan 2
## Perl Kel Resp Resp2
## 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 data frame (df2) akan diambil amatan yang responnya berupa bilangan prima
## Perl Kel Resp Resp2
## 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
Fungsi yang digunakan :Digunakan untuk mengurutkan data berdasarkan peubah tertentu
Mengurutkan data frame (df2) berdasarkan kelompok secara ascending
## Perl Kel Resp Resp2
## 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
Mengurutkan data frame (df2) berdasarkan kelompok dan Respon secara descending
## Perl Kel Resp Resp2
## 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
Mengurutkan data frame (df2) berdasarkan kelompok secara ascending dan Respon secara descending
indeks6 <- order(df2$Resp, decreasing=TRUE)
order3 <- df2[indeks6,]
indeks7 <- order(order3$Kel)
order4 <- order3[indeks7,]
order4## Perl Kel Resp Resp2
## 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
selanjutnya dari tabel hasil sorting diatas, digunakan fungsi-fungsi lain nya yaitu :
sort() untuk mengurutkan respon akan diurutkan terkecil ke terbesar
rev() untuk membalikan data dari respon
rank() untuk memberi peringkat data tersebut urutan ke berapa dari seluruh data
which untuk mengembalikan nilai nomor urut data yang bernilai TRUE sesuai kondisi tertentu
## [1] "Data"
## [1] 19 13 7 1 21 15 9 3 23 17 11 5
## [1] "Fungsi sort()"
## [1] 1 3 5 7 9 11 13 15 17 19 21 23
## [1] "Fungsi rev()"
## [1] 5 11 17 23 3 9 15 21 1 7 13 19
## [1] "Fungsi rank()"
## [1] 10 7 4 1 11 8 5 2 12 9 6 3
## [1] "Respon dengan kondisi tertentu"
## [1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE
## [1] "FUngsi which()"
## [1] 1 2 5 6 9 10 11
## [1] "Mengembalikan nilai respon yang > 10"
## [1] 19 13 21 15 23 17 11
## [1] "atau bisa juga dengan fungsi which"
## [1] 19 13 21 15 23 17 11
Recoding
Dilakukan dengan fungsi :Digunakan untuk membuat nilai baru dari peubah yang sudah ada
Dari data order4 akan direcoding dengan syarat jika respon < 15 maka code 1 dan sisanya kode 0. Bisa dilakukan dengan 3 cara yaitu :
Dengan logical
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
Dengan fungsi ifelse()
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
Dengan fungsi recode()
## Loading required package: carData
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
Merging Data
Bisa dilakukan dengan rbind() , cbind(), atau fungsi merge()
Akan dilakukan penggabungan data frame (df2) dengan tabel1 berdasarkan peubah pertamanya
## Tr k1
## 1 P4 50
## 2 P2 100
## 3 P5 200
Menggabungkan baris dan kolom yang sama antara df2 dan tabel1 saja
## Perl Kel Resp Resp2 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 keseluruhan df2 dengan tabel 1 baik kolom dan barisnya, dan data yang tidak ada diberi nilai nA
## Perl Kel Resp Resp2 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 formatatauwide to long formatmenggunakan fungsireshape()
Akan diubah data frame df2 menjadi data dengan setiap barisnya merupakan masing-masing perlakuan. *** Long to 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
## 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
Referensi
Slide Pertemuan 1-3 Mata Kuliah Pemrograman Statistika
https://bookdown.org/aepstk/intror/ifloop.html#looping-while