A <- 2Latihan Dasar R
Pengantar
Selamat datang di modul pelatihan dasar R menggunakan RStudio! Dalam modul ini, Anda akan mempelajari dasar-dasar penggunaan RStudio untuk analisis data menggunakan bahasa pemrograman R. RStudio adalah Integrated Development Environment (IDE) yang sangat populer untuk pengembangan aplikasi R dan analisis data. Dalam modul ini, Anda akan mempelajari cara mengimpor dan mengelola data, menjalankan perintah R, dan membuat visualisasi data yang menarik menggunakan RStudio.
Pada pelatihan ini, lembar kerja pada RStudio menggunakan Quarto Markdown! Quarto adalah platform dokumentasi modern yang menyediakan format dokumen yang kaya dan mudah dibaca, serta dukungan untuk berbagai bahasa pemrograman termasuk R. Dalam modul ini, Anda akan belajar cara menggunakan Quarto Markdown untuk membuat laporan analisis data yang menarik dan profesional dengan menggunakan kode R. Mari kita mulai!
Lembar kerja pada quarto markdown
Cara buat lembar kerja baru dengan format quarto markdown
Pendahuluan
Assignment atau Pembuatan Objek
Kode atau program R yang akan dijalankan tersimpan dalam chunk di bawah ini. Cara mudah untuk menjalankan kode R dengan meng-klik Run Current Chunk
Kita dapat membuat chunk secara otomatis dengan kombinasi ctrl+alt+i atau klik simbol +c di pojok kanan atas.
A # Disebut objek A[1] 2
A = 2
A[1] 2
B <- "Halo Semua"
B[1] "Halo Semua"
<- dan = serupa untuk pembuatan objek. Disarankan menggunakan <- agar tidak bertabrakan dengan argumen yang menggunakan simbol = juga.
Case-sensitive
a<-10 #Spasi tidak sensitif
A[1] 2
a[1] 10
Penamaan objek
- Diawali huruf (A-Z atau a-z) atau titik (.)
- Tidak menggunakan spasi dan karakter spesial (!,@,#, dst)
- Tidak menggunakan atau menghindari kata yang sudah digunakan oleh R (NULL, TRUE, FALSE, q, c, t, sin, cos, dll)
Operasi dasar
# Operasi Aritmatika
x <- 5
y <- 3
x + y # Output: 8[1] 8
x - y # Output: 2[1] 2
x * y # Output: 15[1] 15
x / y # Output: 1.666667[1] 1.666667
# Operasi Logika
a <- TRUE
b <- FALSE
a & b # Output: FALSE (AND)[1] FALSE
a | b # Output: TRUE (OR)[1] TRUE
!a # Output: FALSE (NOT)[1] FALSE
# Operasi Pembanding
x <- 5
y <- 3
x > y # Output: TRUE[1] TRUE
x < y # Output: FALSE[1] FALSE
x == y # Output: FALSE[1] FALSE
x >= y # Output: TRUE[1] TRUE
x <= y # Output: FALSE[1] FALSE
Latihan
# Buatlah objek beri nama `latihan1` berisi angka 6 dan munculkan outputnya# Buatlah objek beri nama `latihan2` berisi karakter 'Halo Indonesia" dan munculkan outputnyaObjek di R
Di R, terdapat beberapa struktur data dasar seperti vector, matrix, factor, list, dan data frame. Berikut ini adalah penjelasan perbedaan di antara struktur data tersebut:
Vector adalah struktur data satu dimensi dengan elemen-elemen yang sama jenisnya.
Matrix adalah struktur data dua dimensi dengan elemen-elemen yang sama jenisnya.
Factor adalah struktur data yang digunakan untuk menyimpan variabel kategorikal atau nominal.
List adalah struktur data yang dapat menyimpan berbagai jenis objek.
Data frame adalah struktur data yang mirip dengan matriks, tetapi memungkinkan setiap kolom memiliki tipe data yang berbeda dan sering digunakan untuk menyimpan data tabular
Vector
Membuat vektor: Anda dapat membuat vektor dengan menggunakan fungsi c(). Contohnya
Fungsi dalam R adalah kumpulan instruksi yang membentuk suatu tugas tertentu yang dapat digunakan kembali (reusable). Fungsi dalam R dapat digunakan untuk menghindari pengulangan kode yang sama, mengurangi kesalahan dalam kode, dan membuat kode menjadi lebih mudah dibaca dan dimengerti.
Fungsi c() adalah fungsi bawaan di R. Untuk mengetahui nama dan cara penggunakan fungsi caranya jalankan perintah ?c (Help dalam R).
?cstarting httpd help server ... done
a1 <- c(2,4,7,3) # Numeric vector
a2 <- c("one","two","three") # Character vector
a3 <- c(TRUE,TRUE,TRUE,FALSE,TRUE,FALSE) # Logical vector# Memanggil objek vector
a1[1] 2 4 7 3
a3[4] # Elemen ke-4 pada objek a3[1] FALSE
a2[c(1,3)] # Elemen ke-1 dan ke-3 pada objek a2[1] "one" "three"
a1[-1] # Seluruh elemen kecuali element ke-1[1] 4 7 3
a1[2:4] # Elemen ke-2 hingga ke-4[1] 4 7 3
# Operasi vector
a <- c(1, 2, 3)
b <- c(4, 5, 6)
c <- c(a, b) # Menggabungkan vektor
c # Output: 1 2 3 4 5 6[1] 1 2 3 4 5 6
c[1:3] # Output: 1 2 3 (Membagi vektor)[1] 1 2 3
d <- a + b # Operasi matematika pada vektor
d # Output: 5 7 9[1] 5 7 9
Matrix
Membuat matriks: Anda dapat membuat matriks dengan menggunakan fungsi matrix(). Contohnya
?matrixa4 <- 1:12 # Objek vektor dengan nilai 1 sampai 12
b1 <- matrix(a4,3,4) # Matriks 3x4
b2 <- matrix(a4,3,4,byrow=TRUE) # Matriks 3x4 dengan mengisi baris terlebih dahulub3 <- matrix(1:14,4,4)Warning in matrix(1:14, 4, 4): data length [14] is not a sub-multiple or
multiple of the number of rows [4]
Error atau warning seringkali terjadi karena pengunaan fungsi tidak sesuai dengan ketentuan.
Error: Fungsi gagal digunakan
Warning: Fungsi masih berjalan tapi dengan beberapa catatan
b1 [,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
b2 [,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
b3 [,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 1
[4,] 4 8 12 2
b2[2,3] # Baris 2 kolom 3[1] 7
b2[1:2,] # Baris 1 dan 2 semua kolom [,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
b2[c(1,3),-2] # Baris 1 dan 3, semua kolom kecuali kolom 2 [,1] [,2] [,3]
[1,] 1 3 4
[2,] 9 11 12
dim(b2) # Dimensi matrix[1] 3 4
# Operasi matriks
m1 <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
m2 <- matrix(c(7, 8, 9, 10, 11, 12), nrow = 2, ncol = 3)
# Penjumlahan Matriks
m3 <- m1 + m2
m3 [,1] [,2] [,3]
[1,] 8 12 16
[2,] 10 14 18
# Perkalian Matriks
m4 <- m1 %*% t(m2)
m4 [,1] [,2]
[1,] 89 98
[2,] 116 128
Factor
Membuat factor: Anda dapat membuat factor dengan menggunakan fungsi factor(). Contohnya
a5 <- c("A","B","AB","O")
d1 <- factor(a5) # Skala pengukuran nominal
levels(d1) # Sesuai abjad[1] "A" "AB" "B" "O"
levels(d1) <- c("Darah A","Darah AB","Darah B","Darah O")
d1[1] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
a6 <- c("SMA","SD","SMP","SMA","SMA","SMA","SMA","SMA","SMA","SMA","SMA","SMA","SMA")
d5 <- factor(a6, levels=c("SD","SMP","SMA")) # Skala pengukuran ordinal
levels(d5) [1] "SD" "SMP" "SMA"
d5 [1] SMA SD SMP SMA SMA SMA SMA SMA SMA SMA SMA SMA SMA
Levels: SD SMP SMA
List
Membuat list: Anda dapat membuat list dengan menggunakan fungsi list(). Contohnya
a1; b2; d1[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] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
e1 <- list(a1,b2,d1)
e2 <- list(vect=a1,mat=b2,fac=d1)
e1[[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] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
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
$fac
[1] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
e1[[1]][2] [1] 4
e2$fac [1] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
e2[2] $mat
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
names(e2)[1] "vect" "mat" "fac"
Data Frame
Membuat data frame: Anda dapat membuat data frame dengan menggunakan fungsi data.frame(). Contohnya
Angka <- 11:15 # Numerik
Huruf <- factor(LETTERS[6:10]) # Kategorik
f1 <- data.frame(Angka,Huruf)
f1 Angka Huruf
1 11 F
2 12 G
3 13 H
4 14 I
5 15 J
f1[1,2] # Baris 1 kolom 2[1] F
Levels: F G H I J
f1$Angka # Variabel angka[1] 11 12 13 14 15
f1[,"Huruf"] # Variabel Huruf[1] F G H I J
Levels: F G H I J
colnames(f1) # Semua nama kolom[1] "Angka" "Huruf"
str(f1) # Struktur dataframe (jenis data)'data.frame': 5 obs. of 2 variables:
$ Angka: int 11 12 13 14 15
$ Huruf: Factor w/ 5 levels "F","G","H","I",..: 1 2 3 4 5
Latihan
Manajemen Data Frame
data(iris) # Data sample bawaaan dari Rhead(iris) # 6 baris pertama 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
6 5.4 3.9 1.7 0.4 setosa
tail(iris) # 6 baris terakhir Sepal.Length Sepal.Width Petal.Length Petal.Width Species
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica
str(iris)'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Package R
Package R dalam R adalah kumpulan fungsi-fungsi yang telah dibuat oleh pengguna R atau tim pengembang R untuk melakukan tugas-tugas tertentu dalam analisis data dan pemrograman. Setiap paket R berisi sejumlah fungsi dan algoritma yang dapat dipanggil oleh pengguna untuk membantu dalam analisis data dan pemodelan statistik.
Paket R memungkinkan pengguna untuk mengimpor dan menggunakan fungsi-fungsi tertentu tanpa harus menulis ulang kode. Dalam R, terdapat banyak paket yang disediakan secara gratis dan dapat diunduh melalui CRAN (Comprehensive R Archive Network), atau diinstal langsung melalui terminal R dengan menggunakan perintah seperti install.packages("nama_paket").
Setiap paket R memiliki dokumentasi yang menyertai paket tersebut, sehingga pengguna dapat membaca deskripsi fungsi-fungsi dan cara penggunaannya. Selain itu, paket R juga memudahkan pengguna dalam mengembangkan kode mereka sendiri dengan mengimpor fungsi-fungsi dari paket R.
Contohnya: ggplot2: Paket ini menyediakan fungsi untuk membuat grafik visualisasi data dengan mudah dan fleksibel.
dplyr: Paket ini menyediakan fungsi untuk melakukan manipulasi data seperti pemfilteran, pengelompokan, pengurutan, dan penggabungan data.
readxl: Paket ini menyediakan fungsi untuk import file dan export file excel
#install.packages("readxl")
library(readxl) # PemanggilanWarning: package 'readxl' was built under R version 4.2.3
#install.packages("dplyr")
library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
Manipulasi data
dplyr adalah package yang dapat digunakan untuk memanipulasi data yang dikembangkan oleh Hadley Wickham.
Fungsi-fungsi dalam dplyr yang akan digunakan:
mutate(): membuat peubah/variabel barufilter(): memilih data (baris)select(): memilih peubah (kolom)arrange(): mengurutkan datasummarise(): membuat ringkasan datagroup_by(): mendefinisikan grup dalam data
Membuat peubah baru
iris 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
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
11 5.4 3.7 1.5 0.2 setosa
12 4.8 3.4 1.6 0.2 setosa
13 4.8 3.0 1.4 0.1 setosa
14 4.3 3.0 1.1 0.1 setosa
15 5.8 4.0 1.2 0.2 setosa
16 5.7 4.4 1.5 0.4 setosa
17 5.4 3.9 1.3 0.4 setosa
18 5.1 3.5 1.4 0.3 setosa
19 5.7 3.8 1.7 0.3 setosa
20 5.1 3.8 1.5 0.3 setosa
21 5.4 3.4 1.7 0.2 setosa
22 5.1 3.7 1.5 0.4 setosa
23 4.6 3.6 1.0 0.2 setosa
24 5.1 3.3 1.7 0.5 setosa
25 4.8 3.4 1.9 0.2 setosa
26 5.0 3.0 1.6 0.2 setosa
27 5.0 3.4 1.6 0.4 setosa
28 5.2 3.5 1.5 0.2 setosa
29 5.2 3.4 1.4 0.2 setosa
30 4.7 3.2 1.6 0.2 setosa
31 4.8 3.1 1.6 0.2 setosa
32 5.4 3.4 1.5 0.4 setosa
33 5.2 4.1 1.5 0.1 setosa
34 5.5 4.2 1.4 0.2 setosa
35 4.9 3.1 1.5 0.2 setosa
36 5.0 3.2 1.2 0.2 setosa
37 5.5 3.5 1.3 0.2 setosa
38 4.9 3.6 1.4 0.1 setosa
39 4.4 3.0 1.3 0.2 setosa
40 5.1 3.4 1.5 0.2 setosa
41 5.0 3.5 1.3 0.3 setosa
42 4.5 2.3 1.3 0.3 setosa
43 4.4 3.2 1.3 0.2 setosa
44 5.0 3.5 1.6 0.6 setosa
45 5.1 3.8 1.9 0.4 setosa
46 4.8 3.0 1.4 0.3 setosa
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
51 7.0 3.2 4.7 1.4 versicolor
52 6.4 3.2 4.5 1.5 versicolor
53 6.9 3.1 4.9 1.5 versicolor
54 5.5 2.3 4.0 1.3 versicolor
55 6.5 2.8 4.6 1.5 versicolor
56 5.7 2.8 4.5 1.3 versicolor
57 6.3 3.3 4.7 1.6 versicolor
58 4.9 2.4 3.3 1.0 versicolor
59 6.6 2.9 4.6 1.3 versicolor
60 5.2 2.7 3.9 1.4 versicolor
61 5.0 2.0 3.5 1.0 versicolor
62 5.9 3.0 4.2 1.5 versicolor
63 6.0 2.2 4.0 1.0 versicolor
64 6.1 2.9 4.7 1.4 versicolor
65 5.6 2.9 3.6 1.3 versicolor
66 6.7 3.1 4.4 1.4 versicolor
67 5.6 3.0 4.5 1.5 versicolor
68 5.8 2.7 4.1 1.0 versicolor
69 6.2 2.2 4.5 1.5 versicolor
70 5.6 2.5 3.9 1.1 versicolor
71 5.9 3.2 4.8 1.8 versicolor
72 6.1 2.8 4.0 1.3 versicolor
73 6.3 2.5 4.9 1.5 versicolor
74 6.1 2.8 4.7 1.2 versicolor
75 6.4 2.9 4.3 1.3 versicolor
76 6.6 3.0 4.4 1.4 versicolor
77 6.8 2.8 4.8 1.4 versicolor
78 6.7 3.0 5.0 1.7 versicolor
79 6.0 2.9 4.5 1.5 versicolor
80 5.7 2.6 3.5 1.0 versicolor
81 5.5 2.4 3.8 1.1 versicolor
82 5.5 2.4 3.7 1.0 versicolor
83 5.8 2.7 3.9 1.2 versicolor
84 6.0 2.7 5.1 1.6 versicolor
85 5.4 3.0 4.5 1.5 versicolor
86 6.0 3.4 4.5 1.6 versicolor
87 6.7 3.1 4.7 1.5 versicolor
88 6.3 2.3 4.4 1.3 versicolor
89 5.6 3.0 4.1 1.3 versicolor
90 5.5 2.5 4.0 1.3 versicolor
91 5.5 2.6 4.4 1.2 versicolor
92 6.1 3.0 4.6 1.4 versicolor
93 5.8 2.6 4.0 1.2 versicolor
94 5.0 2.3 3.3 1.0 versicolor
95 5.6 2.7 4.2 1.3 versicolor
96 5.7 3.0 4.2 1.2 versicolor
97 5.7 2.9 4.2 1.3 versicolor
98 6.2 2.9 4.3 1.3 versicolor
99 5.1 2.5 3.0 1.1 versicolor
100 5.7 2.8 4.1 1.3 versicolor
101 6.3 3.3 6.0 2.5 virginica
102 5.8 2.7 5.1 1.9 virginica
103 7.1 3.0 5.9 2.1 virginica
104 6.3 2.9 5.6 1.8 virginica
105 6.5 3.0 5.8 2.2 virginica
106 7.6 3.0 6.6 2.1 virginica
107 4.9 2.5 4.5 1.7 virginica
108 7.3 2.9 6.3 1.8 virginica
109 6.7 2.5 5.8 1.8 virginica
110 7.2 3.6 6.1 2.5 virginica
111 6.5 3.2 5.1 2.0 virginica
112 6.4 2.7 5.3 1.9 virginica
113 6.8 3.0 5.5 2.1 virginica
114 5.7 2.5 5.0 2.0 virginica
115 5.8 2.8 5.1 2.4 virginica
116 6.4 3.2 5.3 2.3 virginica
117 6.5 3.0 5.5 1.8 virginica
118 7.7 3.8 6.7 2.2 virginica
119 7.7 2.6 6.9 2.3 virginica
120 6.0 2.2 5.0 1.5 virginica
121 6.9 3.2 5.7 2.3 virginica
122 5.6 2.8 4.9 2.0 virginica
123 7.7 2.8 6.7 2.0 virginica
124 6.3 2.7 4.9 1.8 virginica
125 6.7 3.3 5.7 2.1 virginica
126 7.2 3.2 6.0 1.8 virginica
127 6.2 2.8 4.8 1.8 virginica
128 6.1 3.0 4.9 1.8 virginica
129 6.4 2.8 5.6 2.1 virginica
130 7.2 3.0 5.8 1.6 virginica
131 7.4 2.8 6.1 1.9 virginica
132 7.9 3.8 6.4 2.0 virginica
133 6.4 2.8 5.6 2.2 virginica
134 6.3 2.8 5.1 1.5 virginica
135 6.1 2.6 5.6 1.4 virginica
136 7.7 3.0 6.1 2.3 virginica
137 6.3 3.4 5.6 2.4 virginica
138 6.4 3.1 5.5 1.8 virginica
139 6.0 3.0 4.8 1.8 virginica
140 6.9 3.1 5.4 2.1 virginica
141 6.7 3.1 5.6 2.4 virginica
142 6.9 3.1 5.1 2.3 virginica
143 5.8 2.7 5.1 1.9 virginica
144 6.8 3.2 5.9 2.3 virginica
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica
irisbaru <- mutate(iris, sepal2 = Sepal.Length + Sepal.Width)head(irisbaru) Sepal.Length Sepal.Width Petal.Length Petal.Width Species sepal2
1 5.1 3.5 1.4 0.2 setosa 8.6
2 4.9 3.0 1.4 0.2 setosa 7.9
3 4.7 3.2 1.3 0.2 setosa 7.9
4 4.6 3.1 1.5 0.2 setosa 7.7
5 5.0 3.6 1.4 0.2 setosa 8.6
6 5.4 3.9 1.7 0.4 setosa 9.3
Filter Data
irisetosa <- filter(iris, Species=="setosa")
irisetosa 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
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
11 5.4 3.7 1.5 0.2 setosa
12 4.8 3.4 1.6 0.2 setosa
13 4.8 3.0 1.4 0.1 setosa
14 4.3 3.0 1.1 0.1 setosa
15 5.8 4.0 1.2 0.2 setosa
16 5.7 4.4 1.5 0.4 setosa
17 5.4 3.9 1.3 0.4 setosa
18 5.1 3.5 1.4 0.3 setosa
19 5.7 3.8 1.7 0.3 setosa
20 5.1 3.8 1.5 0.3 setosa
21 5.4 3.4 1.7 0.2 setosa
22 5.1 3.7 1.5 0.4 setosa
23 4.6 3.6 1.0 0.2 setosa
24 5.1 3.3 1.7 0.5 setosa
25 4.8 3.4 1.9 0.2 setosa
26 5.0 3.0 1.6 0.2 setosa
27 5.0 3.4 1.6 0.4 setosa
28 5.2 3.5 1.5 0.2 setosa
29 5.2 3.4 1.4 0.2 setosa
30 4.7 3.2 1.6 0.2 setosa
31 4.8 3.1 1.6 0.2 setosa
32 5.4 3.4 1.5 0.4 setosa
33 5.2 4.1 1.5 0.1 setosa
34 5.5 4.2 1.4 0.2 setosa
35 4.9 3.1 1.5 0.2 setosa
36 5.0 3.2 1.2 0.2 setosa
37 5.5 3.5 1.3 0.2 setosa
38 4.9 3.6 1.4 0.1 setosa
39 4.4 3.0 1.3 0.2 setosa
40 5.1 3.4 1.5 0.2 setosa
41 5.0 3.5 1.3 0.3 setosa
42 4.5 2.3 1.3 0.3 setosa
43 4.4 3.2 1.3 0.2 setosa
44 5.0 3.5 1.6 0.6 setosa
45 5.1 3.8 1.9 0.4 setosa
46 4.8 3.0 1.4 0.3 setosa
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
levels(iris$Species)[1] "setosa" "versicolor" "virginica"
irisversicolor <- filter(iris, Species=="setosa"& Petal.Length==1.3)
head(irisversicolor) Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 4.7 3.2 1.3 0.2 setosa
2 5.4 3.9 1.3 0.4 setosa
3 5.5 3.5 1.3 0.2 setosa
4 4.4 3.0 1.3 0.2 setosa
5 5.0 3.5 1.3 0.3 setosa
6 4.5 2.3 1.3 0.3 setosa
# | - atau
# != - SelainMemilih peubah atau kolom tertentu
#Memilih peubah provinsi dan nilai total
iris3 <- select(iris, Sepal.Length, Species)
head(iris3) Sepal.Length Species
1 5.1 setosa
2 4.9 setosa
3 4.7 setosa
4 4.6 setosa
5 5.0 setosa
6 5.4 setosa
Sorting Data
iris4 <- arrange(iris, Petal.Width)
head(iris4) Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 4.9 3.1 1.5 0.1 setosa
2 4.8 3.0 1.4 0.1 setosa
3 4.3 3.0 1.1 0.1 setosa
4 5.2 4.1 1.5 0.1 setosa
5 4.9 3.6 1.4 0.1 setosa
6 5.1 3.5 1.4 0.2 setosa
iris4 <- arrange(iris, Species, desc(Petal.Width))
head(iris4) Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.0 3.5 1.6 0.6 setosa
2 5.1 3.3 1.7 0.5 setosa
3 5.4 3.9 1.7 0.4 setosa
4 5.7 4.4 1.5 0.4 setosa
5 5.4 3.9 1.3 0.4 setosa
6 5.1 3.7 1.5 0.4 setosa
Tambahan
# Mengubah nama variabel
names(iris4)[1] <- "length"
head(iris4) length Sepal.Width Petal.Length Petal.Width Species
1 5.0 3.5 1.6 0.6 setosa
2 5.1 3.3 1.7 0.5 setosa
3 5.4 3.9 1.7 0.4 setosa
4 5.7 4.4 1.5 0.4 setosa
5 5.4 3.9 1.3 0.4 setosa
6 5.1 3.7 1.5 0.4 setosa
# Menghapus variabel
head(iris4[,c(-1,-3)]) Sepal.Width Petal.Width Species
1 3.5 0.6 setosa
2 3.3 0.5 setosa
3 3.9 0.4 setosa
4 4.4 0.4 setosa
5 3.9 0.4 setosa
6 3.7 0.4 setosa
# Penggunaan group_by dan summarise
iris %>% group_by(Species) %>% summarise(rata2_Sepal.Width = mean(Sepal.Width))# A tibble: 3 × 2
Species rata2_Sepal.Width
<fct> <dbl>
1 setosa 3.43
2 versicolor 2.77
3 virginica 2.97
Latihan
# Gunakan data iris
# Buat peubah baru dengan nama sepal100 yang merupakan data Sepal.Length dikali 100. Jadikan tabel baru beri nama irislatihan1
# Tampilkan 6 baris pertama# Filter data iris berdasarkan spesies setosa dan virginica. Buat jadi tabel baru beri nama irislatihan2
# Tampilkan 6 baris terakhir# Gunakan group_by berdasarkan Species dan summarise Sepal.Width masing2 species dengan ukuran max, min, dan standardeviasi (sd)Visulisasi Sederhana
Histogram
hist(iris$Sepal.Length)#Melihat cara pemakaian fungsi:
#?histBox Plot
boxplot(iris$Sepal.Length)Barplot
table(iris$Species)
setosa versicolor virginica
50 50 50
barplot(table(iris$Species))Pie Chart
pie(table(iris$Species))Scatter Plot
plot(iris$Sepal.Length,iris$Sepal.Width)plot(iris$Sepal.Length, iris$Sepal.Width, main = "Sepal Length vs. Sepal Width",
xlab = "Sepal Length", ylab = "Sepal Width", col = "red")Eksplorasi argumen pada jenis-jenis plot dengan menggunakan help pada R ~?
Latihan
# Berikan argumen pada Histogram dan Box Plot seperti memberi judul dan warna.
# Bebas tidak ada ketentuanAnalisis Statistika Sederhana
Import Data
#CSV
datasekolah <- read.csv("D:\\Project\\_2023\\Pelatihan Spillover 25 Feb - 11 Mar 23\\Dasar R\\sekolah.csv")
head(datasekolah) provinsi grup pulau nilai_guru nilai_siswa
1 Kalimantan Utara 1 luarjawa 21.11538 277.3077
2 Prop. Aceh 2 luarjawa 33.04192 269.7844
3 Prop. Bali 2 luarjawa 45.24370 567.3782
4 Prop. Bangka Belitung 2 luarjawa 25.22368 350.6974
5 Prop. Banten 2 jawa 28.73061 525.1837
6 Prop. Bengkulu 2 luarjawa 28.82883 328.2523
#Excel
library(readxl)
datapersepsi <- read_excel("D:\\Project\\_2023\\Pelatihan Spillover 25 Feb - 11 Mar 23\\Dasar R\\persepsi.xlsx", sheet = "Sheet1")
head(datapersepsi)# A tibble: 6 × 5
x1 x2 y jk edu
<dbl> <dbl> <dbl> <chr> <chr>
1 32.9 48.5 30.2 Laki-laki Magister
2 29.1 54.9 35.6 Perempuan SMA
3 31.2 45.6 33.5 Laki-laki SMA
4 36.8 52.1 41.3 Laki-laki Sarjana
5 31.8 51.9 39.5 Perempuan Sarjana
6 32.2 41.5 38.1 Perempuan Sarjana
Deskiptif dan Korelasi
summary(datapersepsi) x1 x2 y jk
Min. :28.19 Min. :41.54 Min. :25.36 Length:30
1st Qu.:33.19 1st Qu.:50.61 1st Qu.:38.28 Class :character
Median :38.66 Median :55.58 Median :41.02 Mode :character
Mean :39.26 Mean :56.35 Mean :42.99
3rd Qu.:45.50 3rd Qu.:62.23 3rd Qu.:50.37
Max. :51.78 Max. :76.67 Max. :54.33
edu
Length:30
Class :character
Mode :character
datapersepsi$jk <- factor(datapersepsi$jk)
datapersepsi$edu <- factor(datapersepsi$edu)summary(datapersepsi) x1 x2 y jk edu
Min. :28.19 Min. :41.54 Min. :25.36 Laki-laki:18 Diploma : 2
1st Qu.:33.19 1st Qu.:50.61 1st Qu.:38.28 Perempuan:12 Magister: 3
Median :38.66 Median :55.58 Median :41.02 Sarjana :18
Mean :39.26 Mean :56.35 Mean :42.99 SMA : 7
3rd Qu.:45.50 3rd Qu.:62.23 3rd Qu.:50.37
Max. :51.78 Max. :76.67 Max. :54.33
# Korelasi
cor(datapersepsi$x2, datapersepsi$x1)[1] 0.8168092
Avova
anova <- aov(y ~ jk, data = datapersepsi)
summary(anova) Df Sum Sq Mean Sq F value Pr(>F)
jk 1 10.1 10.08 0.143 0.708
Residuals 28 1972.5 70.45
Regresi Linier
regresi <- lm(y ~ x1 + x2 + jk + edu, data = datapersepsi) #OLS
summary(regresi)
Call:
lm(formula = y ~ x1 + x2 + jk + edu, data = datapersepsi)
Residuals:
Min 1Q Median 3Q Max
-9.2786 -3.0455 -0.8073 2.5585 9.9988
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.5574 7.8439 -0.326 0.7473
x1 0.7172 0.2720 2.636 0.0148 *
x2 0.2755 0.1887 1.460 0.1578
jkPerempuan 3.1171 2.3053 1.352 0.1895
eduMagister -3.0373 4.6999 -0.646 0.5245
eduSarjana 0.4276 4.0483 0.106 0.9168
eduSMA 2.8709 4.3177 0.665 0.5127
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 5.01 on 23 degrees of freedom
Multiple R-squared: 0.7088, Adjusted R-squared: 0.6328
F-statistic: 9.331 on 6 and 23 DF, p-value: 3.119e-05
library(lmtest)Loading required package: zoo
Warning: package 'zoo' was built under R version 4.2.2
Attaching package: 'zoo'
The following objects are masked from 'package:base':
as.Date, as.Date.numeric
bptest(regresi) # Uji Heteroskedastisitas
studentized Breusch-Pagan test
data: regresi
BP = 5.743, df = 6, p-value = 0.4526
bgtest(regresi) # Uji Autokorelasi
Breusch-Godfrey test for serial correlation of order up to 1
data: regresi
LM test = 0.47844, df = 1, p-value = 0.4891
shapiro.test(regresi$residuals) # Uji Normalitas
Shapiro-Wilk normality test
data: regresi$residuals
W = 0.97308, p-value = 0.6264
nortest::ad.test(regresi$residuals)
Anderson-Darling normality test
data: regresi$residuals
A = 0.31888, p-value = 0.5183
#install.packages("car")
library(car) # MultikolinearitasLoading required package: carData
Attaching package: 'car'
The following object is masked from 'package:dplyr':
recode
vif(regresi) GVIF Df GVIF^(1/(2*Df))
x1 3.623211 1 1.903473
x2 3.370979 1 1.836023
jk 1.524411 1 1.234670
edu 1.859334 3 1.108901
library(sandwich)
coeftest(regresi, vcov = vcovHAC(regresi)) # Robust Standard Error
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.55744 6.26188 -0.4084 0.686747
x1 0.71719 0.22519 3.1848 0.004125 **
x2 0.27549 0.11967 2.3021 0.030724 *
jkPerempuan 3.11708 2.05662 1.5156 0.143235
eduMagister -3.03732 3.39204 -0.8954 0.379834
eduSarjana 0.42760 1.79527 0.2382 0.813848
eduSMA 2.87087 3.07813 0.9327 0.360680
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Latihan
# Lakukan analisis regresi linier dan pengujiannya pada data `datasekolah`
# Model: nilai_siswa sebagai Y dan X adalah nilai_guru dan pulau