Laporan Pemograman Statistik
Tugas Praktikum 01 - Pemograman Statistika
Materi praktikum yang akan dibahas pada pertemuan 1-3 pada perkualain Pemograman Statistika, di antaranya adalah
OBJEK DI RPENGOLAHAN OBJEK STRUKTUR TERKENDALIDATA WRANGLING atau MANAJEMEN DATA FRAME
OBJEK DI R
Beberapa fungsi yang dapt digunakan dalam mengelola objek di R
- Vector:
c(...),seq(...),rep(...),paste(...) - Matrix:
matrix(...,m,n),dim(vector) <- c(m,n), rbind(...), cbind(...) - Array:
array(..., dim=c(...)) - Factor:
factoor(...), ordered(...,levels=c(...)) - List:
list(...) - Data Frame:
data.frame(...)
Vector
## [1] 2 4 7 3
# melakuan input data menjadi suatu vektor karakter dengan fungsi assign
assign("a2", c("2","4","7","3"))
a2## [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
# Membuat baris bilangan dari 1-10 dengan panjangn barisan sebanyak 12
a4 <- seq(1,10, length.out = 12)
a4## [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
# Membuat bilangan berulang dimana pada syntax ini mengulang angka 1 sebanyak 3 kali
a5 <- rep(1,3)
a5## [1] 1 1 1
# Membuat bilangan berulang dimana pada syntax ini mengulang angka 1-3 sebanyak 3 kali
a6 <- rep(1:3,3)
a6## [1] 1 2 3 1 2 3 1 2 3
# Membuat bilangan berulang dimana pada syntax ini mengulang angka 1-3 diamana elemen pertama diulang 1x, elemen kedua diulang 2x, dan elemen ke-3 diulang 3x
a7 <- rep(1:3,1:3)
a7## [1] 1 2 2 3 3 3
# membuat bilangan berulang dimana pada syntax ini mengulang angka 1-3 sebanyak 2x
a8 <- rep(1:3, rep(2,3))
a8## [1] 1 1 2 2 3 3
# membuat bilangan berulang dimana pada syntax ini mengulang angka 1-3 sebanyak 2x
a9 <- rep(1:3, each=2)
a9## [1] 1 1 2 2 3 3
Karakter berpola paste()
# Menggabungkan huruf A dengan elemen 1-10 dengan memberikan fungsi sep agar huruf dang angka tidak terpisah
a10 <- paste("A", 1:10, sep="")
a10## [1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
# Menggabungkan huruf A dengan elemen 1-10 dengan memberikan dengan fungsi paste0
a11 <- paste0("A", 1:10)
a11## [1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
# Menggabungkan huruf A dengan elemen 1-10 dengan memberikan tanda '-' diantara huruf dan angka
a12 <- paste("A", 1:10, sep="-")
a12## [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
# Mengakses vektor dengan '[]' pada syntax ini ingin menampilkan data elemen ke-3 pada data a2
a2[3]## [1] "7"
## [1] 5.5 6.0 6.5 7.0 7.5 8.0
## [1] "A4" "A7" "A9"
# Mengakses atau menampilkan elemen pada data a13 dengan tidak menampilkan elemen ke-1 dan ke-2
a13[-c(1:2)]## [1] "A2" "A2" "A3" "A3"
## [1] 12
Latihan 1
# Tentukan ouput syntax dibawah ini , dimana sytanx dibawah untuk menampilkan 'la' dan 'ye' dengan formasi `la``ye``ye``la` yang diulang 4x
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"
# Tentukan ouput syntax dibawah ini , dimana sytanx dibawah untuk menampilkan 'la' dan 'ye' dengan formasi `la``ye` masing-2 diulang 3 kali lalu formasi tersebut digandakan
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
# Tentukan ouput syntax dibawah ini , dimana sytanx dibawah untuk menampilkan nilai `X` `Y`diulang sebanyak 5x lalu dari data tersebut digabung dengan data numerik 1-10
L21 <-c("X","Y")[rep(c(1,2),times=5)]
L22 <- paste0(L21,1:10 )
L22## [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
# Membuat matrix dari data a14 dengan ukuran matrix 3x4, tetapi pengurutan data berdasarkan baris matrix
b2 <- matrix(a14,ncol=4, byrow = TRUE)
b2## [,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 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
# Membuat matrix 6x2 dari data b5 yang bernilai a14, sehingga merubah dimensi dari data awal
b5 <- a14
dim(b5) <- c(6,2)
b5## [,1] [,2]
## [1,] 1 7
## [2,] 2 8
## [3,] 3 9
## [4,] 4 10
## [5,] 5 11
## [6,] 6 12
## [,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
# ukuran matrix a14, dimana bernilai`null` karena bukan merupakan bentuk vektor atau matrix
dim(a14)## NULL
## [1] 16
Akses Matrix
## [,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
# ambil data dari matrix b2 dari kolom 1 sampai kolom 3 kecuali baris ke- dan kolom ke-2
b2[c(1,3),-2]## [,1] [,2] [,3]
## [1,] 1 3 4
## [2,] 9 11 12
# ambil data dari matrix b2 pada data ke -10 dimana dihitung dari data kolom-1 samapai data ke-10
b2[10]## [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
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
# pengurutan tingkatan berdasarkan penginputan pada data di a16
d5 <- factor(a16, ordered = TRUE)
d5## [1] SD SMP SMA
## Levels: SD < SMA < SMP
## [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
Latihan soal
## [1] "P1" "P1" "P1" "P2" "P2" "P2" "P3" "P3" "P3" "P4" "P4" "P4"
## [1] 1 2 3 1 2 3 1 2 3 1 2 3
## [1] 1 3 5 7 9 11 13 15 17 19 21 23
## 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 TERKENDALI
Pengolahan Objek
- Operasi aljabar sederhana vektor numerik:
+,-,*,/,^,%*%,%o%
## [1] 2 6 9 5
## [1] 1 2 3 4
# Operasi penambahan pada panjang data yang berbeda antara x1 dengan data penambahnya
x3 <- x1 + 1:2
x3## [1] 3 8 10 7
## [1] 3 8 12 6
## [1] 2 12 27 20
## [,1] [,2] [,3] [,4]
## [1,] 4 12 18 10
## [2,] 12 36 54 30
## [3,] 18 54 81 45
## [4,] 10 30 45 25
## [,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
- Fungsi dalam operasi karakter
nchar(...),paste(...),substr(...),substring(...)
## [1] "Institut Pertanian Bogor"
## [1] "Adam" "Pramesti" "Fathi" "Ririn"
## [1] 4 8 5 5
## [1] "nian"
# mengambil sebagian data pada karakter dengan menentukan batasan awal dan batasan akhirnya atau tanpa batasan akhir
y4 <- substring(y1,15)
y4## [1] "nian Bogor"
## [1] "titut"
- Operasi dasar matrix
t(...),%*%,%o%,diag(...),solve(...),eigen(...)
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
# data 1-6 dibuat matrix ukuran 3x3nput data diurutkan mulai dari baris pertama matrix
z2 <- matrix(1:6,3,2,byrow = T)
z2## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
## [,1] [,2]
## [1,] 6 8
## [2,] 7 9
# Perkalian dua buah matrix dimana ukuran matrix Z1 dan Z2 harus comfarmable atau selaras
z4 <- z1 %*% z2
z4## [,1] [,2]
## [1,] 35 44
## [2,] 44 56
# Perkalian dua buah matriks pada masing-masing elemen pada ukuran kedua matriks sama
z5 <- z3*z4
z5## [,1] [,2]
## [1,] 210 352
## [2,] 308 504
## [,1] [,2]
## [1,] 2.333333 -1.833333
## [2,] -1.833333 1.458333
# akan menghasilkan matrix identitas apabila suatu matrix z4 dikalikan dengan invers dari matrsix z4
I <- invz %*% z4
I## [,1] [,2]
## [1,] 1 2.842171e-14
## [2,] 0 1.000000e+00
## [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) 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)
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
# fungsi while dalam mencetak nilai berpangkat 2 dengan fungsi `while`
i <- 1
while(i<=5){
print(i^2)
i=i+1
}## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
# Membangkitkan bilangan acak dengan sEBARAN UNIFORM sebanyak 20 angka,bila i < 0.5 maka print i x 100 dan bila i>=0.5 i/100
y <- runif(20)
for(i in y) {
if(i<0.5){
print(100*i)
} else print(i/100)
}## [1] 0.008073893
## [1] 0.006972125
## [1] 0.005148818
## [1] 0.009158328
## [1] 0.005770259
## [1] 8.317908
## [1] 0.006278082
## [1] 0.009010887
## [1] 44.42509
## [1] 0.006547237
## [1] 6.401007
## [1] 21.97212
## [1] 0.005302853
## [1] 0.005264953
## [1] 11.57055
## [1] 1.925929
## [1] 11.00684
## [1] 0.006274199
## [1] 11.5673
## [1] 45.44688
# dibuat kondisi z=0 dimana nilai y dibangkitkan pada 20 bilangan dengan sebaran uniform, selama nilainya lebih kecil sama dengan 10 maka jumlahkan nilai y dan cetak
z=0
while (z<=10) {
y = runif(20)
z=sum(y)
print(z)
}## [1] 10.35056
# pecobaan dimana mengambil sampel acak dari data 1 sampai 5 lalu dipilih 1 angka, setelah terpilih angkanya maka nilai yang terpilih akan ditukar dengan huruf sesuai dengan pendefinisian angka dengan hurufnya
acak <- sample(1:5,1)
acak## [1] 2
## [1] "z"
# fungsi apply: dimana terdapat matrix ukuran 5x5, lalu pada matrix z6 dipilih tiap baris matrix lalu dijumlahkan nilai-2 pada tiap baris matrix. sedangkan untuk yang apply(,z6,2,sd) adalah dipilih kolom pada matrix lalu dicari standard deviasi pada tiap kolom matriks. (1 adalah baris dan 2 adalah kolom)
z6 <- matrix(1:25,5,5)
apply(z6,1,sum)## [1] 55 60 65 70 75
## [1] 1.581139 1.581139 1.581139 1.581139 1.581139
Latihan 4
Tentukan hasil dari setiap perintah berikut ini
# Mengurutkan data dengan selisih bertingkat (selisih:2,3,4,5) dengan menggunakan fungsi `for`
a <- 0
for(i in 1:5)
{b <- a + i
print(b)
a <- b
}## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15
# Mengurutkan data dengan selisih bertingkat (selisih:2,3,4,5) dengan menggunakan fungsi `while`
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
# Mengurutkan data dengan selisih bertingkat (selisih:2,3,4,5) dengan menggunakan fungsi 'repeat', 'if'
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
Manajemen Data Frame
- Membuat Variabel baru dalam data frame
- Subsetting data
- Recording data
- Merging data
- Reshaping data
Data yang digunakan dalam materi ini adalah:
Perl <- paste("P", rep(1:4,each=3),sep="")
Kel <- factor(rep(1:3,4))
Resp <- seq(1,23, by=2)
data3 <- data.frame(Perl,Kel,Resp)
data3## 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 Variabel Baru dalam Data Frame
Dilakukan seperti membuat vektor (dengan indeks atau operasi seleksi)
namadataframe$namavariabelbaru <- ekspresi
namadataframe[,nomorkolom] <- ekspresi
## 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:
==fungsis sama dengan,!=fungsi tidak sama dengan,>lebih besa,>=lebih besar sama dengan,<lebih kecil,<=lebih kecil sama dengan,%in%memeriksa data pada vektor yang ditetapkan,duplicatedmemeriksa elemen yang terduplikasi,is.namemeriksa apakah ada data ‘NA’,is.nullmemeriksa apakah ada data ‘NULL’,is.numeric, dll
# Tugasnya adalah menampilkan data dari data3 yang merupakan Kelompok 1
indeks1 <- data3$Kel==1
indeks1## [1] TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
## Perl Kel Resp baru1
## 1 P1 1 1 12
## 4 P2 1 7 9
## 7 P3 1 13 6
## 10 P4 1 19 3
# Tugasnya adalah menampilkan data dari data3 yang merupakan kelompok 1 atau Perlakuan P2
indeks2 <- data3$Kel==1 | data3$Perl=="P2"
data5 <- data3[indeks2,]
data5## 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
# Tugasnya adalah menampilkan data dari data3 dimana pada kolom Resp bernilai bilangan prima
indeks3 <- data3$Resp %in% c(2,3,5,7,11,13,17,19,23)
data6 <- data3[indeks3,]
data6## 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 perubah tertentu
- Dilakukan dengan membuat vektor logika untuk melakukan pengurutan data
- Fungsi sering digunakan
order(...)mengurutkan data indeks dari suatu variabel,sort(...)langsung mengurutkan data,rev(...)mengurutkan data dengan kebalikannya,unique(...)mengurutkan pada nilai data yang unik
# Tugasnya adalah mengurutkan data3 berdasarkan kelompok secara ascending
indeks4 <- order(data3$Kel)
data7 <- data3[indeks4,]
data7## 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
# Tugasnya adalah mengurutkan data3 berdasarkan kelompok dan Respon secara descending
indeks5 <- order(data3$Kel, data3$Resp, decreasing = TRUE)
data8 <- data3[indeks5,]
data8## 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
# Tugasnya adalah mengurutkan data3 berdasarkan kelompok secara ascending dan Respon secara descending (caranya mengurutkan data Respon baru mengurutkan kembali data Kel)
indeks6 <- order(data3$Resp,decreasing = TRUE)
data9 <- data3[indeks6,]
data9## Perl Kel Resp baru1
## 12 P4 3 23 1
## 11 P4 2 21 2
## 10 P4 1 19 3
## 9 P3 3 17 4
## 8 P3 2 15 5
## 7 P3 1 13 6
## 6 P2 3 11 7
## 5 P2 2 9 8
## 4 P2 1 7 9
## 3 P1 3 5 10
## 2 P1 2 3 11
## 1 P1 1 1 12
## 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
Contoh lain soritng 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
# Mengecek data 10 pada kolom Resp yang bernilai lebih dari 10 dengan otput TRUE/FALSE
data10$Resp>10## [1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE
# mengecek data 10 pada kolom Resp yang bernilai lebih dari 10 dengan output data elemen yang bernilai TRUE
which(data10$Resp>10)## [1] 1 2 5 6 9 10 11
## [1] 19 13 21 15 23 17 11
## [1] 19 13 21 15 23 17 11
Recording Data
Digunakan untuk membuat nilai baru dari nilai perubah yang sudah ada
Dapat dilakukan secara logical, fungsi ifelse(…), dan fungsi recode(…)
melakukan recording pada data10 untuk variabel respon dengan kondisi jika respon < 15 maka Code = 1, selainnya Code = 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(…)
Gabungkan data3 dengan tabel1 berdasarkan variabel pertamanya
tabel
# menggabungkan data dimana apabila key pada data3 dan tabel1 tidak sama maka data akan dibuang (all=FALSE)
tabel1 <- data.frame(Tr=c("P4","P2","P5"),k1=c(50,100,200))
data11 <- merge(data3, tabel1, by.x=1, by.y=1, all=FALSE)
data11## 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 data dimana apabila key pada data3 dan tabel1 tidak sama maka data tetap ditampilkan (all=TRUE)
data12 <- merge(data3, tabel1,by.x="Perl",by.y="Tr", all=TRUE)
data12## 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
- Wide to long format
- Menggunakan fungsi Rshape
Ubahlan data3 menjadi data dengan setiap barisnya merupakan masing-masing perlakuan
# Membuat tabel baru dari data3 dimana Perl sebagai baris dan Resp sebagai kolom dengan cara Long to WIde ([,-4] mengahapus data3 kolom ke-4; idvar sebagai baris; timevar sebagai kolom; bentuknya wide; nilainya adalah Resp yang tidak dimasukkan dalam syntax)
data13 <- reshape(data3[,-4], idvar = "Perl",
timevar = "Kel", direction = "wide")
data13## 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
# Mengganti bentuk tabel pada data13 yang sebelumnya directionnya wide menjadi long
data14 <- reshape(data13, idvar = "Perl", timevar = "Kel", direction = "long")
data14## 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