2 + 3 + 7
## [1] 12
5 - 1 +7
## [1] 11
4*2*7
## [1] 56
10/2/5
## [1] 1
4^3^2
## [1] 262144
a <- 105 # Membuat variabel 'a' dan mengisinya dengan nilai 105
b <- -5 # Membuat variabel 'b' dan mengisinya dengan nilai -5
c <- a + b # Membuat variabel 'c' yang berisi hasil penjumlahan 'a' dan 'b'
c # Menampilkan nilai dari variabel 'c'
## [1] 100
vektor <- c(-1, 0, 1, 2, 3, 4, 5, 6, 7) # Membuat vektor numerik dengan nilai -1 hingga 7
vektor # Menampilkan isi vektor
## [1] -1 0 1 2 3 4 5 6 7
warna <- c("Merah", "Biru", "Hijau", "Merah", "Biru", "Hijau", "Merah", "Hitam")
warna # Menampilkan isi vektor karakter
## [1] "Merah" "Biru" "Hijau" "Merah" "Biru" "Hijau" "Merah" "Hitam"
warna_factor <- factor(warna) # Mengubah vektor karakter menjadi faktor
str(warna_factor) # Menampilkan struktur dari faktor 'warna_factor'
## Factor w/ 4 levels "Biru","Hijau",..: 4 1 2 4 1 2 4 3
table(warna_factor) # Menampilkan frekuensi masing-masing kategori dalam faktor
## warna_factor
## Biru Hijau Hitam Merah
## 2 2 1 3
data_list <- list(
angka = c(10, 20, 30, 40),
teks = c("A", "B", "C"),
kategori = factor(c("Baik", "Sedang", "Buruk"))
)
print(data_list) # Menampilkan seluruh isi list
## $angka
## [1] 10 20 30 40
##
## $teks
## [1] "A" "B" "C"
##
## $kategori
## [1] Baik Sedang Buruk
## Levels: Baik Buruk Sedang
data_karyawan <- data.frame(
Nama = c("Andi", "Budi", "Citra", "Dewi", "Virgijawir"), # Kolom Nama
Usia = c(25, 30, 27, 35, 20), # Kolom Usia
Pekerjaan = factor(c("Pegawai", "Wirausaha", "Mahasiswa", "Pegawai", "Silverman")) # Kolom Pekerjaan
)
print(data_karyawan) # Menampilkan seluruh isi dataframe
## Nama Usia Pekerjaan
## 1 Andi 25 Pegawai
## 2 Budi 30 Wirausaha
## 3 Citra 27 Mahasiswa
## 4 Dewi 35 Pegawai
## 5 Virgijawir 20 Silverman
summary(data_karyawan) # Menampilkan ringkasan statistik dari dataframe
## Nama Usia Pekerjaan
## Length:5 Min. :20.0 Mahasiswa:1
## Class :character 1st Qu.:25.0 Pegawai :2
## Mode :character Median :27.0 Silverman:1
## Mean :27.4 Wirausaha:1
## 3rd Qu.:30.0
## Max. :35.0
array_data <- array(1:24, dim = c(3, 4, 2)) # Membuat array dengan dimensi 3x4x2
print(array_data) # Menampilkan isi array
## , , 1
##
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
##
## , , 2
##
## [,1] [,2] [,3] [,4]
## [1,] 13 16 19 22
## [2,] 14 17 20 23
## [3,] 15 18 21 24
dim(array_data) # Menampilkan dimensi dari array
## [1] 3 4 2
nilai <- c(90, 85, NA, 75, 80, NA, 95, 111) # Membuat vektor dengan beberapa nilai NA
# Mengecek nilai yang hilang
is.na(nilai) # Mengecek apakah ada nilai NA dalam vektor
## [1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
# Menghitung jumlah nilai NA dalam vektor
sum(is.na(nilai)) # Menghitung total nilai NA dalam vektor
## [1] 2
x1 <- seq(0, 15, length=5) # Membuat sequence dari 0 hingga 15 dengan 5 elemen
x1 # Menampilkan sequence
## [1] 0.00 3.75 7.50 11.25 15.00
{r8 x2 <- seq(0,15,length=8) # Membuat deret angka dengan 6 elemen x2
x3 <- seq(0,15,length=7) # Membuat deret angka dengan 7 elemen
x3
## [1] 0.0 2.5 5.0 7.5 10.0 12.5 15.0
round(x3) # Membulatkan nilai dalam 'x3' ke bilangan bulat terdekat
## [1] 0 2 5 8 10 12 15
floor(x3) # Membulatkan nilai dalam 'x3' ke bawah
## [1] 0 2 5 7 10 12 15
ceiling(x3) # Membulatkan nilai dalam 'x3' ke atas
## [1] 0 3 5 8 10 13 15
rep(c("A", "B", "C"), 5) # Mengulang vektor "A", "B", "C" sebanyak 5 kali
## [1] "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C"
rep(c("A", "B", "C"), each=5) # Mengulang setiap elemen vektor "A", "B", "C" sebanyak 5 kali
## [1] "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "C" "C" "C" "C" "C"
rep(c("A", "B", "C"), each=2, 5) # Mengulang setiap elemen vektor "A", "B", "C" sebanyak 2 kali, dan seluruhnya diulang 5 kali
## [1] "A" "A" "B" "B" "C" "C" "A" "A" "B" "B" "C" "C" "A" "A" "B" "B" "C" "C" "A"
## [20] "A" "B" "B" "C" "C" "A" "A" "B" "B" "C" "C"
rep(1:5, 5) # Mengulang vektor 1 hingga 5 sebanyak 5 kali
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
rep(1:5, each=5) # Mengulang setiap elemen vektor 1 hingga 5 sebanyak 5 kali
## [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5
rep(1:5, each=2, 5) # Mengulang setiap elemen vektor 1 hingga 5 sebanyak 2 kali, dan seluruhnya diulang 5 kali
## [1] 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4
## [39] 5 5 1 1 2 2 3 3 4 4 5 5
# Membuat data x dan y
x <- c(3, 4, 5, 6) # Membuat vektor x
y <- c(2, 3, 4, 5, 6, 6) # Membuat vektor y
# Menghitung nilai statistik dasar
min(x) # Menghitung nilai minimum dari vektor x
## [1] 3
max(y) # Menghitung nilai maksimum dari vektor y
## [1] 6
mean(x) # Menghitung rata-rata dari vektor x
## [1] 4.5
var(y) # Menghitung variansi dari vektor y
## [1] 2.666667
cor(x, y[1:length(x)]) # Menghitung korelasi antara vektor x dan y (panjang harus sama)
## [1] 1
# Menentukan range (jangkauan nilai)
range(x) # Menghitung range dari vektor x
## [1] 3 6
range(y) # Menghitung range dari vektor y
## [1] 2 6
# Simulasi pelemparan koin (0 = ekor, 1 = kepala)
set.seed(123) # Mengatur seed untuk hasil yang konsisten
sample(0:1, 30, replace = TRUE) # Simulasi pelemparan koin sebanyak 30 kali
## [1] 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1
# Simulasi pengambilan sampel huruf "A" dan "G" sebanyak 15 kali
sample(c("A", "G"), 15, replace = TRUE) # Simulasi pengambilan sampel huruf "A" dan "G"
## [1] "A" "G" "A" "G" "G" "A" "A" "A" "A" "G" "A" "G" "G" "A" "A"
# Simulasi pelemparan dadu sebanyak 30 kali
sample(1:6, 30, replace = TRUE) # Simulasi pelemparan dadu sebanyak 30 kali
## [1] 1 1 2 3 4 5 5 3 6 1 2 5 5 4 5 2 1 1 3 1 6 5 1 2 4 4 6 6 3 6
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
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
library(ggplot2)
data <- tbl_df(iris)
## Warning: `tbl_df()` was deprecated in dplyr 1.0.0.
## ℹ Please use `tibble::as_tibble()` instead.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
class(data)
## [1] "tbl_df" "tbl" "data.frame"
data
## # A tibble: 150 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 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 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 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
## # ℹ 140 more rows
data_slice <- slice(data, 1:10)
data_slice
## # A tibble: 10 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 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 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 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
arrange(data_slice, desc(data_slice$Sepal.Length))
## # A tibble: 10 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.4 3.9 1.7 0.4 setosa
## 2 5.1 3.5 1.4 0.2 setosa
## 3 5 3.6 1.4 0.2 setosa
## 4 5 3.4 1.5 0.2 setosa
## 5 4.9 3 1.4 0.2 setosa
## 6 4.9 3.1 1.5 0.1 setosa
## 7 4.7 3.2 1.3 0.2 setosa
## 8 4.6 3.1 1.5 0.2 setosa
## 9 4.6 3.4 1.4 0.3 setosa
## 10 4.4 2.9 1.4 0.2 setosa
datatable <- data.table(iris)
datatable
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <num> <num> <num> <num> <fctr>
## 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
## ---
## 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
datatable$new_col <- datatable$Species
datatable$new_col
## [1] setosa setosa setosa setosa setosa setosa
## [7] setosa setosa setosa setosa setosa setosa
## [13] setosa setosa setosa setosa setosa setosa
## [19] setosa setosa setosa setosa setosa setosa
## [25] setosa setosa setosa setosa setosa setosa
## [31] setosa setosa setosa setosa setosa setosa
## [37] setosa setosa setosa setosa setosa setosa
## [43] setosa setosa setosa setosa setosa setosa
## [49] setosa setosa versicolor versicolor versicolor versicolor
## [55] versicolor versicolor versicolor versicolor versicolor versicolor
## [61] versicolor versicolor versicolor versicolor versicolor versicolor
## [67] versicolor versicolor versicolor versicolor versicolor versicolor
## [73] versicolor versicolor versicolor versicolor versicolor versicolor
## [79] versicolor versicolor versicolor versicolor versicolor versicolor
## [85] versicolor versicolor versicolor versicolor versicolor versicolor
## [91] versicolor versicolor versicolor versicolor versicolor versicolor
## [97] versicolor versicolor versicolor versicolor virginica virginica
## [103] virginica virginica virginica virginica virginica virginica
## [109] virginica virginica virginica virginica virginica virginica
## [115] virginica virginica virginica virginica virginica virginica
## [121] virginica virginica virginica virginica virginica virginica
## [127] virginica virginica virginica virginica virginica virginica
## [133] virginica virginica virginica virginica virginica virginica
## [139] virginica virginica virginica virginica virginica virginica
## [145] virginica virginica virginica virginica virginica virginica
## Levels: setosa versicolor virginica
setkey(datatable, Species)
key(datatable)
## [1] "Species"
datatable[,.(mean=mean(Sepal.Length), IQR=IQR(Sepal.Length), median=median(Sepal.Length)), by=Species]
## Key: <Species>
## Species mean IQR median
## <fctr> <num> <num> <num>
## 1: setosa 5.006 0.400 5.0
## 2: versicolor 5.936 0.700 5.9
## 3: virginica 6.588 0.675 6.5
plot_data <- ggplot(data,aes(x=Sepal.Length, y=Sepal.Width)) + geom_point(aes(colour=Species))
plot_data
Latihan Soal |
1. Ketikkan perintah di bawah ini dan berikan pernyataan apa saja yang dapat kalian peroleh dari perintah tersebut! |
r nama_vector <- c(5, FALSE, "true", "8.3", "Statistika") nama_vector |
## [1] "5" "FALSE" "true" "8.3" "Statistika"
Pernyataan yang dapat diperoleh: |
Vector hanya dapat memiliki satu tipe data, sehingga semua elemen akan dikonversi ke tipe data yang paling umum. Dalam hal ini, semuanya dikonversi menjadi karakter (character). Nilai 5 dan FALSE akan berubah menjadi “5” dan “FALSE” sebagai string. TRUE tetap berupa string “true”, dan “8.3” juga tetap string. “Statistika” juga berupa string. |
contoh_list <- list(5, FALSE, "true", "8.3", "Statistika")
contoh_list
## [[1]]
## [1] 5
##
## [[2]]
## [1] FALSE
##
## [[3]]
## [1] "true"
##
## [[4]]
## [1] "8.3"
##
## [[5]]
## [1] "Statistika"
Perbedaan List dan Vector:
Vector harus memiliki elemen dengan tipe data yang sama (dalam contoh sebelumnya, semua dikonversi menjadi character). List dapat menyimpan elemen dengan tipe data yang berbeda (integer, logical, character, dll.). Pemanggilan elemen dalam list menggunakan [[ ]], sedangkan dalam vector menggunakan [ ].
kelompok_kkn <- data.frame(
nama = c("Andi", "Budi", "Citra", "Dewi", "Eka", "Fajar", "Gita", "Hadi", "Indah", "Joko"),
nim = c("210001", "210002", "210003", "210004", "210005", "210006", "210007", "210008", "210009", "210010"),
prodi = c("Statistika", "Matematika", "Fisika", "Kimia", "Biologi",
"Informatika", "Statistika", "Matematika", "Fisika", "Kimia")
)
# Memanggil seluruh data frame
kelompok_kkn
## nama nim prodi
## 1 Andi 210001 Statistika
## 2 Budi 210002 Matematika
## 3 Citra 210003 Fisika
## 4 Dewi 210004 Kimia
## 5 Eka 210005 Biologi
## 6 Fajar 210006 Informatika
## 7 Gita 210007 Statistika
## 8 Hadi 210008 Matematika
## 9 Indah 210009 Fisika
## 10 Joko 210010 Kimia
# Memanggil kolom tertentu
kelompok_kkn$nama # Mengambil seluruh nama
## [1] "Andi" "Budi" "Citra" "Dewi" "Eka" "Fajar" "Gita" "Hadi" "Indah"
## [10] "Joko"
kelompok_kkn$nim # Mengambil seluruh NIM
## [1] "210001" "210002" "210003" "210004" "210005" "210006" "210007" "210008"
## [9] "210009" "210010"
# Memanggil baris tertentu
kelompok_kkn[1, ] # Baris pertama
## nama nim prodi
## 1 Andi 210001 Statistika
kelompok_kkn[5, ] # Baris kelima
## nama nim prodi
## 5 Eka 210005 Biologi
# Memanggil elemen tertentu
kelompok_kkn[3, 2] # Baris ke-3, Kolom ke-2 (NIM dari Citra)
## [1] "210003"
# Menggunakan subset berdasarkan kondisi
subset(kelompok_kkn, prodi == "Statistika")
## nama nim prodi
## 1 Andi 210001 Statistika
## 7 Gita 210007 Statistika
Perbedaan Cara Pemanggilan:
Vector: Bisa dipanggil langsung dengan indeks [ ]. List: Menggunakan [[ ]] untuk elemen spesifik. Data Frame: Bisa dipanggil dengan indeks [row, column]. Bisa dipanggil dengan $nama_kolom untuk seluruh isi kolom. Bisa menggunakan subset() untuk penyaringan data berdasarkan kondisi.
kelompok_kkn_na <- data.frame(
nama = c("Andi", "Budi", "Citra", "Dewi", NA, "Fajar", "Gita", "Hadi", "Indah", "Joko"),
nim = c("210001", NA, "210003", "210004", "210005", "210006", "210007", NA, "210009", "210010"),
prodi = c("Statistika", "Matematika", "Fisika", NA, "Biologi",
"Informatika", "Statistika", "Matematika", "Fisika", "Kimia")
)
# Mencari posisi missing values
is.na(kelompok_kkn_na)
## nama nim prodi
## [1,] FALSE FALSE FALSE
## [2,] FALSE TRUE FALSE
## [3,] FALSE FALSE FALSE
## [4,] FALSE FALSE TRUE
## [5,] TRUE FALSE FALSE
## [6,] FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE
## [8,] FALSE TRUE FALSE
## [9,] FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE
# Menampilkan baris yang mengandung NA
kelompok_kkn_na[is.na(kelompok_kkn_na$nama), ]
## nama nim prodi
## 5 <NA> 210005 Biologi
kelompok_kkn_na[is.na(kelompok_kkn_na$nim), ]
## nama nim prodi
## 2 Budi <NA> Matematika
## 8 Hadi <NA> Matematika
kelompok_kkn_na[is.na(kelompok_kkn_na$prodi), ]
## nama nim prodi
## 4 Dewi 210004 <NA>
Kesimpulan:
is.na() digunakan untuk mendeteksi NA dalam data frame. Bisa digunakan dalam indexing untuk menampilkan baris dengan NA. Data frame bisa memiliki missing values, berbeda dengan vector yang biasanya tidak mendukung NA dengan baik.