OBJEK DI R Vector c(…), seq(…), rep(…), paste(…) •Matrix matrix(…,m,n),dim(vector)<-c(m,n),rbind(…),cbind(…) •Array array(…,dim=c(…)) •Factor factor(…), ordered(…,levels=c(…)) •List list(…) •Data Frame data.frame(…)

Ada beberapa objek dalam program R yang bisa kita temui diantaranya vector, matrix, array, factor, list dan data frame. berikut ini beberapa simulasi dalam menggunakan objek di R

  1. vektor

dalam membangkitkan data dalam bentuk vektor kita menggunakan fungsi“c()”. vektor ini merupakan data dengan 1 dimensi .

a1<-c(2,4,7,3)
a1
## [1] 2 4 7 3

selain menggunakan fungsi “c()” kita juga bisa menggunakan fungsi assign dalam menampilkan vektor, fungsi aasign ini indektik dengan “<-” pada contoh sebelumnya

assign("a2", c("2", "4", "7", "3"))
a2
## [1] "2" "4" "7" "3"

selain itu ada pula fungsi lainnya dalam vektor yaitu fungsi “seq” fungsi seq ini berfungsi untuk menampilkan barisan.pada syntax dibawah akan menampilkan output barisan dari angka 1 sampai dengan 10 dengan cacah kelipatan 0.5

a3<-seq(1,10, by=0.5)
a3
##  [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

pada fungsi seq dibawah ini akan menghasilkan barisan angka 1 sampai 10 dengan banyak bilangan/ panjang nya 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

selain itu kita juga bisa membangkitkan barisan bilangan yang elemennya merupakan pengulangan adapun fungsi yang digunakan rep().output dari syntax dibawah ialah mengulang angka 1 sebanyak tiga kali

a5<-rep(1,3)
a5
## [1] 1 1 1

output dari syntax dibawah ini ialah menghasilkan angak 1 smpai 3 sebanyak tiga kali

a6<-rep(1:3, 3)
a6
## [1] 1 2 3 1 2 3 1 2 3

pada syntax ini mengartikan akan menyalin angka 1 sebanyak empat kali, angka 2 sebanyak 5 kali dan angka 3 sebnyk 6 kali

a7<-rep(1:3, 4:6)
a7
##  [1] 1 1 1 1 2 2 2 2 2 3 3 3 3 3 3

output dari a8 adalah angka 1-3 diulang sebanyak6 kali masing-masing untuk ketiga elemen atau dengan kata lain 3 elemennya yaitu 1,2 dan 3 yang tiap elemn tersebut akan diulang sebanyak enam kali

a8<-rep(1:3, rep(6,3))
a8
##  [1] 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3

hasil output dari a9 ialah mengulang angka 1,2 dan 3 masing-masing dua kali

a9<-rep((1:3), each=2)
a9
## [1] 1 1 2 2 3 3

selain vektor numerik kita juga mengenal vektor charakter, dimana isi dari vektornya merupakan cakater, vektor karakter biasanya ditandai dengan "" atau ’’ (tanda kutip).

a10<-paste("A", 1:10, sep="")
a10
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"
a11<-paste0("A", 1:10)
a11
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"

output dari a12 merupaka karakter, A1 berurut sampai A10, karena pada fungsi (sep=“-”) maka outputnya masing masing karakternya akan diantarai “-”

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"

hasil output dari a13, merupakan karakter dimana perulangannya mengikuti perulangan a8 yaitu masing-masing elemen akan di diulang sebnyak enak kali, dalam hal ini A1 diulang sebanyak enam kali, A2 sebanyak enam kali, A3 sebanyak enam kali.

a13<-paste0("A", a8)
a13
##  [1] "A1" "A1" "A1" "A1" "A1" "A1" "A2" "A2" "A2" "A2" "A2" "A2" "A3" "A3" "A3"
## [16] "A3" "A3" "A3"

selain membangkitka vektor di R juga kita bisa memanggil elemen vekor. syntax dibawah memanggil elemen yang ada pada vetor yag dinamai a2 tepatnya elemen yang di panggil berada pada elemen ketiga

a2[3]
## [1] "7"

hasil outputnya akan memanggil dan menampilkan element-elemen yang tersimpan di a3, elemen-elemen yang dipanggiladalah elemen dari 10 sampai denga 15

a3[10:15]
## [1] 5.5 6.0 6.5 7.0 7.5 8.0

a14 merupakan vektor dengan panjang 12 yang isinya merupakan bilangan 1-12

a14<-1:12
a14
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
  1. MATRIKS

selain membangkitkan data yang berbentuk vektor, pada R juga bisa membangkitkan databerbentuk matriks dengan fungsi “matrix”. hasil output syntax b1 dibawah ialah data atau numerik yang tersimpan pada a14 akan dibentuk menjadi matris yang berukuran 3 baris dan 4 kolom secara default numerik tersebut berurutan sesaui kolom.

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

berbeda pada variabel b1, varaibel b2 akan menampilkan matrix yang entri-entriny merupakn numerik dari 12 dengan ukuran 3 baris, 4 kolom karena byrow= T, maka numerik 1-12 akan terurut berdasarkan baris

b2<-matrix(a14,3,4,byrow = T)
b2
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

varabel b3 cukup menarik, mengapa demikian?? karena ukuran matriksnya 4X4 atau ada 16 cel, sementara numerik yang tersediah hanya 1-10 angka atau dengan kata lain panjangnya berukuran 10.maka setelah angka 1-10 mengisi 10 cel pada matriks b3, maka pada cel ke-11 akan disisi oleh angka 1 kembali, maka dari itu baris ke-3 kolom ke-4 berisi angka 1 dan seterusnya secara berurutan.

b3<-matrix(1:10,4,4)
## Warning in matrix(1:10, 4, 4): data length [10] is not a sub-multiple or
## multiple of the number of rows [4]
b3
##      [,1] [,2] [,3] [,4]
## [1,]    1    5    9    3
## [2,]    2    6   10    4
## [3,]    3    7    1    5
## [4,]    4    8    2    6
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

variabel b5 merupakan vektor yang berisi variabel a14(vektor numerik yang berisi angka 1-12)

b5<-a14
b5
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12

suatu vektor dapat digunakan di R sebagai suatu array jika hanya memiliki dimensi sama, kita bisa menggunakan atribut “dim”.

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

suatu matriks dengan dengan ukuran 2 baris 2 kolom( secara otomatis karena panjang data 4 dan sudah dibagi menjadi dua matriks, maka secara otomatis akan terdiri 2 kolom walupun tidak di definiskan pada syntax)

b6<-matrix(1:4,2)
b6
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4

variabel b4 merupakan matriks yang berisi angka 6-9 dengan ukuran 2X2

b7<-matrix(6:9,2)
b7
##      [,1] [,2]
## [1,]    6    8
## [2,]    7    9

ada beberapa fungsi yang berguna untuk mengeoperasikan matriks salah satunya yaitu fungsi untuk menggabungkan matriks berdasarkan baris “rbind”.

b8<-rbind(b6,b7)
b8
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## [3,]    6    8
## [4,]    7    9

jika “rbind” fungsi yang berguna untuk menggabungkan matrix-matrix yang berbeda berdasrkan barisnya. maka “cbind” merupakan fungsi yang digunakan untuk mengganbungkan matriks berdasarkan kolomnya.

b9<-cbind(b7,b6)
b9
##      [,1] [,2] [,3] [,4]
## [1,]    6    8    1    3
## [2,]    7    9    2    4

fungsi dim bisa digunakan untuk mengetahui dimensi dari matriks yang dituju, ilustrasinya pada syntax dibawah “dim(b8)” outputnya memberikan kita informasi bahwa array 2 dimensi (matriks) dengan ukuran 4 baris dan 2 kolom.

dim(b8)
## [1] 4 2
dim(b9)
## [1] 2 4

length merupakan fungsi yang digunakan untuk mengetahui informasi mengenai panjang data.

length(b3)
## [1] 16

dibawah ini merupakan ilustrasi untuk memanggil entri- entri dari matriks

b2
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
b2[2,3]
## [1] 7
b2[2,2:4]
## [1] 6 7 8
b2[1:2,]
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
b2[c(1,3),-2]
##      [,1] [,2] [,3]
## [1,]    1    3    4
## [2,]    9   11   12
b2[10]
## [1] 4
  1. ARRAY

jika vektor metupakan array 1 dimensi, matriks array 2 dimensi, amak array itu sedniri merupakan ukuran array yang lebih dari 2

c1 <- array(a14,dim=c(2,2,3))
c2 <- array(a14,dim=c(2,1,2,3))
c3 <- array(a14,dim=c(1,2,4,2))
c4 <- array(a14,dim=c(3,4))
c2[,,1,3] 
## [1]  9 10
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

selain vektor numerik R juga bisa membangkitkan vektor vaiabel.

a15 <- c("A","B","AB","O")
a15
## [1] "A"  "B"  "AB" "O"
  1. FACTOR

Factor adalah struktur data yang menyimpan kategori dari vector bertipe karakter.

d1 <- factor(a15) 
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
a16 <- c("SD","SMP","SMA")
a16
## [1] "SD"  "SMP" "SMA"
d4<-order(a16)

d4
## [1] 1 3 2
d5<-factor(a16, levels=a16, ordered = T)
d5
## [1] SD  SMP SMA
## Levels: SD < SMP < SMA
d1[2]
## [1] B
## Levels: A AB B O
d4[2:3]
## [1] 3 2
  1. LIST list merupakan jenis stuktur data yang bisa menyimpan jenis data yang tidak seragam, berbeda dengan stuktur data vektor dan matriks.
a1; b2; c1; d2
## [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
e1 <- list(a1,b2,c1,d2)
e2 <- list(vect=a1,mat=b2,array=c1,fac=d2)
e2
## $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

syntax yang digunakan untuk memanggil elemen pertama pada list.

e1[[1]]
## [1] 2 4 7 3
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

pada syntax dibawah ini length mmerupakan fungsi untuk mengetahui panjang/banyaknya data dari list e2

length(e2)
## [1] 4
names(e2)
## [1] "vect"  "mat"   "array" "fac"
  1. DATA FRAME tipe stuktur data frame merupakan stuktur data yang lebih kompleks dibandingkan dengan stuktur data sebelum-sebelumnya. data frame terdiri data baris dan kolom. dan dapat menyimpan tipe data yang tidak seragam.
a17 <- 11:15
d5 <- factor(LETTERS[6:10])
f1 <- data.frame(d5,a17)
a17
## [1] 11 12 13 14 15
d5
## [1] F G H I J
## Levels: F G H I J
f1
##   d5 a17
## 1  F  11
## 2  G  12
## 3  H  13
## 4  I  14
## 5  J  15

ada bebrapa operasi yang bisa digunakan pada dataframe salah satunya ialah “$” dimana syntaxnya berarti data d5 akan di panggil dari data frame f1.

f1$d5
## [1] F G H I J
## Levels: F G H I J

salah satu cara lain dalam memannggil elemen yang ada pada data frame dengan menggunakan “[]”

f1["d5"]
##   d5
## 1  F
## 2  G
## 3  H
## 4  I
## 5  J

fungsi colnames dapat digunakan untuk mengetahui nama-nama variabel/ kolom dari dataframe yang kita miliki. ini sangat berguna dalam hal memanajement atau menganilis data.

colnames(f1)
## [1] "d5"  "a17"
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

fungsinsummary digunakan untuk mengetahui statistika deskriptive dari data frame tersebut

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 I • Tentukan output syntax program berikut: 1. c(“la”,“ye”)[rep(c(1,2,2,1),times=4)] 2. c(“la”,“ye”)[rep(rep(1:2,each=3),2)]

terlihat pada syntax pertama outputnya akan menghasilkan vektor yang berisi “ia dan”ye" dan akan di ulang sebanyak 4 kali itu terlihat dari syntax “times=4”, dan urutan vector outputnya ialah mengikuti c(1,2,2,1) artinya ketika 1 maka outputnya adalah elemen pertama dari vektor c(“ia”, “ye”) dalam hal ini urutan pertamanyanya ialah “ia” dan jika angka 2 maka outputnya adalah elemen kedua dari vector c(“ia”, “iye”)

c("ia", "ye")[rep(c(1,2,2,1),times=4)]
##  [1] "ia" "ye" "ye" "ia" "ia" "ye" "ye" "ia" "ia" "ye" "ye" "ia" "ia" "ye" "ye"
## [16] "ia"

terlihat pada syntax kedua ini bahwa outputnya merupakan vektor yang berisi karakter “ia” dan “ye”, secara terurut akan menampilkan barisan dengan karakter “ia” pada urutan pertama itu karena syntaks rep(1:2) yang mengartikan yang akan tercetak terlebih dahulu ialah elemen pertama pada vektor c(“ia”, “ye”) dan akan diulang sebanyak tiga kali itu karena syntax (each=3) yang mengartikan masing-masing vektor “ia” dan “ye” akan di cetak masing-masing sebanyak tiga kali. perulangan ini akan kita lakukan sebanyak dua kali, hal itu dikarenakan syntax [rep(rep(1:2, each=3), 2)] angka 2 teralhir pada syntax tersebut yang menginstruksikan bahwa perulangan yang tadi akan diulang sebanyak dua kali

c("ia", "ye")[rep(rep(1:2, each=3), 2)]
##  [1] "ia" "ia" "ia" "ye" "ye" "ye" "ia" "ia" "ia" "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

untuk menampilkan vektor X1 Y2 X3 Y4 X5 Y6 X7 Y8 X9 Y10 kita menggunakan syntax seperti dibawah syntax “paste” artinya akan mencetak vektor x dan y dan bilangan 1:10. seperti yang terlihat pada outputnya.

latihan2_1<-paste(c("x", "y"), 1:10, sep="")
latihan2_1
##  [1] "x1"  "y2"  "x3"  "y4"  "x5"  "y6"  "x7"  "y8"  "x9"  "y10"

untuk menampilkan vektor 1 4 7 10 13 16 19 22 25 28 kita menggunakan syntax “seq(1,28, by=3)” yang artinya akan mencetak vektor yang berisi barisan bilangan 1-28 dengan seleisih atau jarak antar barisannya adalah 3.

latihan2_2<-seq(1,28, by=3)
latihan2_2
##  [1]  1  4  7 10 13 16 19 22 25 28

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!

untuk mendapatkan output seperti tabel data1, kita bisa menggunkan syntax-syntax seperti dibawah dimana, per1 dibentuk dari syntax paste dengan output karakter “P” dengan bilangan 1-3 dimana karakter-karakternya dengan kombinasi angka masing-masing diulang sebanyak 3 kali. dalam hal ini, “P1” akan diulang sebnayak 3 kali, “P2” iulang sebanyak 3 kali begitupun dengan “P3” diualang sebanyak tiga kali.

selanjutnya kolom kedua kel dibanetuk dengan syntax factor dimana outputnya bilangan 1-3 angka di cetak lebih dahulu lalu bilangan tersebut diulang sebanyak 4 kali

selanjutnya pada kolom resp kita menggunkan syntax “seq” untuk menampilkan angka 1-23 dengan jarak bilangan-bilangan pada barisan adalah 2.

selanjutnya peubah-peubah per1, kel, resp akan dibentuk menjadi dataframe dengan syntax “data.frame”

per1<-paste("p" ,rep(1:4, each=3), sep="")
kel<-factor(rep(1:3, 4))
Resp<-seq(1,23, by=2)
latihan3<-data.frame(per1,kel,Resp)
latihan3
##    per1 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

MANAJEMEN DATA FRAME

(Data Wrangling/Munging) • Membuat peubah baru dalam data frame • Subsetting data • Sorting data • Recoding data • Merging data • Reshaping data

  1. kita akan membuat peubah baru pada data frame kita, dengan menggunakan syntax: • Dilakukan seperti membuat vektor (dengan indeks atau operasi seleksi) namadataframe$namavariabelbaru<-ekspresi namadataframe[,nomorkolom]<-ekspresi
per1<-paste("p" ,rep(1:4, each=3), sep="")
kel<-factor(rep(1:3, 4))
Resp<-seq(1,23, by=2)
data1<-data.frame(per1,kel,Resp)
data1
##    per1 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 I Pada data1, buatlah peubah’baru1’ yang berisi nilai dari 12 sampai 1 secara berurutan

syntax dibawah ini mengartikan bahwa kita akan menambahkan peubah baru dengan nama peubah “baru1” pada data frame data1., yang berisi bilangan 12-1

data1$baru1<-12:1
data1
##    per1 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

LATIHAN 2 Dari data1 tersebut ambillah yang termasuk kelompok 1

selanjutnya kita akan subsetting data frame “data1”, pada kasus ini kita hanya akan menampilkan data yang termasuk kelompok 1 saja. pada syntax berikut terlihat bahwa kita memiliki object “indeks1” yang berisi subsetting data frame dengan hanya menampilkan data yeng termasuk kelompok 1 saja. lalu kita menyimpannya pada data frame data2.

indeks1<-data1$kel==1
data2<-data1[indeks1,]
data2
##    per1 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 atauperlakuan P2

pada object indeks2 kita mengakses sebagian data dari data frame “data1” dengan menggunakan ide logic dalam hal ini kita menggunakan fungsi “|”. pada indeks dua kita akan mengakses data frame data1 untuk kel=1 atau per1=“p2”, setelah itu kita simpan pada data3, data frame data3 terlihat terdiri dari data frame yang kelompoknya merupakan kelompok satu atau per1 nya merupakan “p2”

indeks2 <- data1$kel == 1 | data1$per1 == "p2"
data3 <- data1[indeks2,]
data3
##    per1 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

pada indeks3 kita akan mengambil amatan yang responnya berupa bilangan prima. dengan fungsi %In% kita dapat mengambil respon yang berupa data amatan prima dari respon dari data1. dengan syntax indeks3<-data1$Resp %in% c(2,3,5,7,11,13,17,19,23), setelah itu kita akan menyimpannya pada data frame data4.

indeks3<-data1$Resp %in% c(2,3,5,7,11,13,17,19,23)
data4<-data1[indeks3,]
data4
##    per1 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

Latihan 5 Urutkan data1 tersebut berdasarkan kelompok secara ascending.

indeks4<-order(data1$kel)
data5<-data1[indeks4,]
data5
##    per1 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

pada indeks5 kita akan menurutkan data secara descending (descending =T) berdasarkan kel pada data1(data1$kel) dan resp pada data1 (data1Resp).

indeks5<-order(data1$kel, data1$Resp, decreasing = T)
data6<-data1[indeks5,]
data6
##    per1 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

selanjutnya kita akan mengurutkan data1, dimana berdasarkan kelompokmakan di urutkan secara ascending dan berdasarkan respon akan diurutkan secara descending. pada indeks6, kita terlebih dahulu mengurtukan resp dari data1 secara decreasing dengan syntax (indeks6<-order(data1$Resp, decreasing = T)) selanjutkan kita akan menyimpannya pada data frame data7, selanjutnya kita akan mengurutkan kel pada data frame data7 (dataframe data1 yang telah diurutkan kolom resp secara descending) secara ascending dengan syntax (indeks7<-order(data7kel)). selanjutnya kita penyimpannya pada dataframe data8.

indeks6<-order(data1$Resp, decreasing = T)
data7<-data1[indeks6,]

indeks7<-order(data7$kel)
data8<-data7[indeks7,]
data8
##    per1 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
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
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
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

Latihan 8 • Lakukanlah recoding pada data8 untuk variabel respon dengan kondisi jika respon<15 maka Code = 1, selainnya Code = 0.

data8$Code1<-0*(data8$Resp>=15)+1*(data8$Resp<15)
data8$Code2<-ifelse(data8$Resp<15,1,0)
library(car)
## Loading required package: carData
data8$code3<-recode(data8$Resp, "1:4=1; else=0")
data8
##    per1 kel Resp baru1 Code1 Code2 code3
## 10   p4   1   19     3     0     0     0
## 7    p3   1   13     6     1     1     0
## 4    p2   1    7     9     1     1     0
## 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     0
## 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     0
## 3    p1   3    5    10     1     1     0

Latihan 9 Gabungkanlah data1 dengan tabel1 berdasarkan peubah pertamanya.

merge merupakan syntax yang digunakan untuk merging data.

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="per1",by.y="Tr",all=TRUE)
data10
##    per1  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

Latihan 10

Ubahlah data1 menjadi data dengan setiap barisnya merupakan masing-masing perlakuan

resahpe merupakan syntax yang digunakan untuk reshaping data. Long to wide format

data11 <- reshape(data1[,-4],idvar="per1", timevar="kel",direction="wide")
data11
##    per1 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 format

data12 <- reshape(data11,idvar="per1", timevar="Kel",direction="long")
data12
##      per1 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

MENGEXPLORE MANAJEMEN DATA FRAME PAD ADATASET COVID.

setelah kita melakukan beberapa simulasi pada praktikum object di R dan manajemen data frame, selanjutnya kita akan mengexplore dataset covid.19. pada explorasi data covid.19, kita ingin mengetahui negara mana yang memiliki jumlah kasus postive dengan pertimbangan jumlah tes.

langkah pertama kita memanggil terlebihi dahulu library-library yang kita gunakan pada saat explorasi dataset covid.19

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)

setelah kita memanggil library-library yang kita butuhkan, langkah selanjutnya adalah pengimprot dataset covid19.cvs. kita menyimpan data frame covid19 pada variabel covid_df.

covid_df<-read.csv("E:/covid19.csv")

selanjutnya kita akan melihat dimensi dari data frame covid_df.

dim((covid_df))
## [1] 10903    14

langkah selanjutnya yang tidak kalah penting ialah mengetahui variabel-variabel dari data frame covid19.

vector_cols<-colnames(covid_df)
vector_cols
##  [1] "Date"                    "Continent_Name"         
##  [3] "Two_Letter_Country_Code" "Country_Region"         
##  [5] "Province_State"          "positive"               
##  [7] "hospitalized"            "recovered"              
##  [9] "death"                   "total_tested"           
## [11] "active"                  "hospitalizedCurr"       
## [13] "daily_tested"            "daily_positive"

berikut adalah beberapa tampilan awal dari data frame covid19_df.

head(covid_df)
##         Date Continent_Name Two_Letter_Country_Code Country_Region
## 1 2020-01-20           Asia                      KR    South Korea
## 2 2020-01-22  North America                      US  United States
## 3 2020-01-22  North America                      US  United States
## 4 2020-01-23  North America                      US  United States
## 5 2020-01-23  North America                      US  United States
## 6 2020-01-24           Asia                      KR    South Korea
##   Province_State positive hospitalized recovered death total_tested active
## 1     All States        1            0         0     0            4      0
## 2     All States        1            0         0     0            1      0
## 3     Washington        1            0         0     0            1      0
## 4     All States        1            0         0     0            1      0
## 5     Washington        1            0         0     0            1      0
## 6     All States        2            0         0     0           27      0
##   hospitalizedCurr daily_tested daily_positive
## 1                0            0              0
## 2                0            0              0
## 3                0            0              0
## 4                0            0              0
## 5                0            0              0
## 6                0            5              0
glimpse(covid_df)
## Rows: 10,903
## Columns: 14
## $ Date                    <chr> "2020-01-20", "2020-01-22", "2020-01-22", "...
## $ Continent_Name          <chr> "Asia", "North America", "North America", "...
## $ Two_Letter_Country_Code <chr> "KR", "US", "US", "US", "US", "KR", "US", "...
## $ Country_Region          <chr> "South Korea", "United States", "United Sta...
## $ Province_State          <chr> "All States", "All States", "Washington", "...
## $ positive                <int> 1, 1, 1, 1, 1, 2, 1, 1, 4, 0, 3, 0, 0, 0, 0...
## $ hospitalized            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ recovered               <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ death                   <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ total_tested            <int> 4, 1, 1, 1, 1, 27, 1, 1, 0, 0, 0, 0, 0, 0, ...
## $ active                  <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ hospitalizedCurr        <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ daily_tested            <int> 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ daily_positive          <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...

sebelum kita melangkah lebihjauh, terlebih dahulu kita memerhatikan datasate yang kita memilki, ada beberapa kolom yang entri kolomnya tidak konsisten, mari kita melihat pada kolom province_state, disana terjadi perbedaan level dari provience_state, ada yang menggunakan level negara dan level provience. untuk analysis yang lebih efesien dan tidak bias maka kita akan membatasi pada kolom provience kita hanya menggunakan level “all states”.

covid_df_all_states<-covid_df%>%filter(Province_State=="All States")

sebelumnya kita telah diberitahukan apa-apa saja variabel yang ada pada data frame covid_df. dari data tersebut kita bisa melihat sebenarnya ada dua infromasi yang kita dapatkan, ada informasi yang bersifat komulatif dan ada yang bersifat inforamsi harian.contohnya daily_tested mengambarkan informasi harian dan total_tested mengambarkan informasi komulatif. lagi-lagi utnukanalisi kita tidak bias maka kita akan membatasi analisi kita pada informasi harian saja.

covid_df_all_states_daily<-covid_df_all_states%>%select("Date", "Country_Region", "active", "hospitalizedCurr", "daily_tested", "daily_positive")

selanjutnya kita akan menghitung total dari tes harian, jumlah kasus postive harian , kasus aktif harian dan kasus aktif pasien harian yang ada dalam rumah sakit berdasarkan country region. kemudian kita urutkan dengan secara descending.

covid_df_all_states_daily_sum<-covid_df_all_states_daily %>% group_by(Country_Region)%>%summarise(tested=sum(daily_tested), positive=sum(daily_positive), active=sum(active), hospitalized=sum(hospitalizedCurr))%>%arrange(desc(tested))
## `summarise()` ungrouping output (override with `.groups` argument)

setelah kita mendapatkan data tetsed yang kita urutkan secara decending berdasarkan country region kita akan mencari top 10. negara mana saja yang memiliki jumalah tested paling besar.

covid_top_10<-head(covid_df_all_states_daily_sum, 10)
covid_top_10
## # A tibble: 10 x 5
##    Country_Region   tested positive  active hospitalized
##    <chr>             <int>    <int>   <int>        <int>
##  1 United States  17282363  1877179       0            0
##  2 Russia         10542266   406368 6924890            0
##  3 Italy           4091291   251710 6202214      1699003
##  4 India           3692851    60959       0            0
##  5 Turkey          2031192   163941 2980960            0
##  6 Canada          1654779    90873   56454            0
##  7 United Kingdom  1473672   166909       0            0
##  8 Australia       1252900     7200  134586         6655
##  9 Peru             976790    59497       0            0
## 10 Poland           928256    23987  538203            0

kemudian kita akan memanggil kolom-kolom pada data frame untuk dijadikan sebagai vektor, agar dalam beberapa perhitungan nantinya kita akan menggunakanoperasi vektor

countries<-covid_top_10$Country_Region
countries
##  [1] "United States"  "Russia"         "Italy"          "India"         
##  [5] "Turkey"         "Canada"         "United Kingdom" "Australia"     
##  [9] "Peru"           "Poland"
tested_cases<-covid_top_10$tested
tested_cases
##  [1] 17282363 10542266  4091291  3692851  2031192  1654779  1473672  1252900
##  [9]   976790   928256
positive_cases<-covid_top_10$positive
active_cases<-covid_top_10$active
hospitalized_cases<-covid_top_10$hospitalized

masing-masing dari tested,dan psotive_cases kita akan tetap menamainya berdasarkan negara region.

codes <-c(tested_cases)
country <- c(countries) 
names(codes) <- country
codes
##  United States         Russia          Italy          India         Turkey 
##       17282363       10542266        4091291        3692851        2031192 
##         Canada United Kingdom      Australia           Peru         Poland 
##        1654779        1473672        1252900         976790         928256
n<-c(positive_cases)
m<-c(countries)
names(n)<-m
n
##  United States         Russia          Italy          India         Turkey 
##        1877179         406368         251710          60959         163941 
##         Canada United Kingdom      Australia           Peru         Poland 
##          90873         166909           7200          59497          23987
l<-data.frame(n)

selanjutnya untuk mengetahui rasio dari jumlah kasus positif terhadap tes.

library(dplyr)
positive_cases_top_3<-n/codes
positive_cases_top_3
##  United States         Russia          Italy          India         Turkey 
##    0.108618191    0.038546552    0.061523368    0.016507300    0.080711720 
##         Canada United Kingdom      Australia           Peru         Poland 
##    0.054915490    0.113260617    0.005746668    0.060910738    0.025840932
t<-data.frame(positive_cases_top_3)
t
##                positive_cases_top_3
## United States           0.108618191
## Russia                  0.038546552
## Italy                   0.061523368
## India                   0.016507300
## Turkey                  0.080711720
## Canada                  0.054915490
## United Kingdom          0.113260617
## Australia               0.005746668
## Peru                    0.060910738
## Poland                  0.025840932

kita telah mendapatkan hasil 3 negara dengan jumlah kasus positive terbesar berdasarkan jumlah tes.

y<-arrange(t, desc(positive_cases_top_3))
w<-head(y,3)
w
##                positive_cases_top_3
## United Kingdom           0.11326062
## United States            0.10861819
## Turkey                   0.08071172

selanjutnya kita akan membuat matrix yang berisikan informasi ratio, tetsed, positive, aktive dan hozptalized

united_kingdom<-c(0.11, 1473672, 166909, 0, 0)
united_states<-c(0.10, 17282363, 1877179,0,0)
turkey<-c(0.08, 2031192, 163941,2980960, 0)
covid_mat<-rbind(united_kingdom, united_states, turkey)
colnames(covid_mat)<-c("ratio", "tested", "positive", "active", "hospitalized")
k<-data.frame(covid_mat)
k
##                ratio   tested positive  active hospitalized
## united_kingdom  0.11  1473672   166909       0            0
## united_states   0.10 17282363  1877179       0            0
## turkey          0.08  2031192   163941 2980960            0
top_3<-c(k$ratio)
negara<-c("united_kingdom","united_state", "turkey")
names(top_3)<-negara
top_3
## united_kingdom   united_state         turkey 
##           0.11           0.10           0.08
question<-c("which countries have had the higest number of positive cases againts the number of test?")
answer<-c("positif tested cases"= top_3)

membentuk list dengan isi vektor, matrix, dataframe.

data_stucture_list<-list(vect=vector_cols, countries, mat=covid_mat, df=covid_df, covid_df_all_states, covid_df_all_states_daily,covid_top_10)
covid_analysis_list<-list(question, answer, data_stucture_list)

berikut ini merupakan kesimpulan dari anlisis diatas, bahwa negara dengan kasus positive terbesar berdasarkan/pertimbangan jumlah tes adalah, united kingdom, united state dan turkey.

question
## [1] "which countries have had the higest number of positive cases againts the number of test?"
answer
## positif tested cases.united_kingdom   positif tested cases.united_state 
##                                0.11                                0.10 
##         positif tested cases.turkey 
##                                0.08