Operasi Dasar
2 + 3
## [1] 5
5 - 1
## [1] 4
4*2
## [1] 8
2^3
## [1] 8
Pembuatan Variabel
a <- 10
b <- 5
c <- a+b
c
## [1] 15
Struktur Data Dasar
vektor <- c(1, 2, 3, 4, 5)
vektor
## [1] 1 2 3 4 5
Membuat Vektor Karakter
warna <- c("Hitam", "Pink", "Putih", "Hitam", "Pink", "Putih", "Hitam")
warna
## [1] "Hitam" "Pink" "Putih" "Hitam" "Pink" "Putih" "Hitam"
Mengonversi ke Faktor
warna_factor <- factor(warna)
Menampilkan Struktur Faktor
str(warna_factor)
## Factor w/ 3 levels "Hitam","Pink",..: 1 2 3 1 2 3 1
Menampilkan Level yang Ada dalam Faktor
levels(warna_factor)
## [1] "Hitam" "Pink" "Putih"
Frekuensi Tiap Kategori
table(warna_factor)
## warna_factor
## Hitam Pink Putih
## 3 2 2
Membuat List yang Berisi Berbagai Jenis Data
data_list <- list(
angka = c(10, 20, 30, 40),
teks = c("A", "B", "C"),
kategori = factor(c("Baik", "Sedang", "Buruk"))
)
Menampilkan Isi List
print(data_list)
## $angka
## [1] 10 20 30 40
##
## $teks
## [1] "A" "B" "C"
##
## $kategori
## [1] Baik Sedang Buruk
## Levels: Baik Buruk Sedang
Mengakses Elemen List
data_list$angka
## [1] 10 20 30 40
data_list[[2]]
## [1] "A" "B" "C"
Membuat Dataframe
data_protagonist <- data.frame(
Nama = c("Pak Arip", "Mas Adi", "Bu Sulis", "Yanto"), # Kolom Nama
Usia = c(1070, 42, 11, 21), # Kolom Usia
Pekerjaan = factor(c("Tentara", "Kurir", "Pedagang", "Gamers")) # Kolom Pekerjaan
)
Menampilkan Dataframe
print(data_protagonist)
## Nama Usia Pekerjaan
## 1 Pak Arip 1070 Tentara
## 2 Mas Adi 42 Kurir
## 3 Bu Sulis 11 Pedagang
## 4 Yanto 21 Gamers
Menampilkan Ringkassan Dataframe
summary(data_protagonist)
## Nama Usia Pekerjaan
## Length:4 Min. : 11.0 Gamers :1
## Class :character 1st Qu.: 18.5 Kurir :1
## Mode :character Median : 31.5 Pedagang:1
## Mean : 286.0 Tentara :1
## 3rd Qu.: 299.0
## Max. :1070.0
Membuat Array 3 Dimensi
array_data <- array(1:24, dim = c(3, 4, 2))
Menampilkan Array
print(array_data)
## , , 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
Menampilkan Dimensi Array
dim(array_data)
## [1] 3 4 2
Membuat Vektor dengan Nilai NA
nilai <- c(90, 85, NA, 75, 80, NA, 95)
is.na(nilai)
## [1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE
sum(is.na(nilai))
## [1] 2
Sequance Generation
x1 <- seq(0, 10, length=5)
x1
## [1] 0.0 2.5 5.0 7.5 10.0
x2 <- seq(0, 10, length=6)
x2
## [1] 0 2 4 6 8 10
x3 <- seq(0, 10, length=7)
x3
## [1] 0.000000 1.666667 3.333333 5.000000 6.666667 8.333333 10.000000
Pembulatan Pecahan Desimal
round(x3)
## [1] 0 2 3 5 7 8 10
floor(x3)
## [1] 0 1 3 5 6 8 10
ceiling(x3)
## [1] 0 2 4 5 7 9 10
Replicate Elements
rep(c("A", "B", "C"), 5)
## [1] "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C"
rep(c("A", "B", "C"), each=5)
## [1] "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "C" "C" "C" "C" "C"
rep(1:5, 5)
## [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=2, 5)
## [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
Fungsi Dasar Statistika pada R
x <- c(3, 4, 5, 6)
y <- c(2, 3, 4, 5, 6, 6)
min(x)
## [1] 3
max(x)
## [1] 6
mean(x)
## [1] 4.5
var(y)
## [1] 2.666667
cor(x, y[1:length(x)])
## [1] 1
range(x)
## [1] 3 6
range(y)
## [1] 2 6
Simulasi Sampel Acak
set.seed(121)
sample(0:1, 30, replace = TRUE)
## [1] 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1
sample(c("A", "G"), 15, replace = TRUE)
## [1] "G" "G" "G" "A" "G" "G" "G" "G" "A" "A" "G" "G" "G" "G" "G"
sample(1:6, 30, replace = TRUE)
## [1] 1 2 1 4 5 5 5 1 4 3 3 5 3 3 2 2 4 5 2 3 2 5 1 2 4 2 1 2 2 5
Praktikum Manipulasi Dasar
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
nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5" "FALSE" "true" "8.3" "Statistika"
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"
kelompok_kkn <- data.frame(
nama = c("Bayu", "Ardy", "Bima", "Rizka", "Zara", "Faroek", "Ibnu", "Hanif", "Akmal", "Rara"),
nim = c("280001", "210002", "270003", "260004", "250005", "240006", "230007", "220008", "290009", "200010"),
prodi = c("Sejarah", "Teknik Informatika", "Ekonomi", "Fisika", "Hukum", "manajemen", "Matematika", "Sastra Inggris", "Geografi", "Ilmu Politik")
)
kelompok_kkn
## nama nim prodi
## 1 Bayu 280001 Sejarah
## 2 Ardy 210002 Teknik Informatika
## 3 Bima 270003 Ekonomi
## 4 Rizka 260004 Fisika
## 5 Zara 250005 Hukum
## 6 Faroek 240006 manajemen
## 7 Ibnu 230007 Matematika
## 8 Hanif 220008 Sastra Inggris
## 9 Akmal 290009 Geografi
## 10 Rara 200010 Ilmu Politik
Memanggil seluruh kolom
kelompok_kkn$nama
## [1] "Bayu" "Ardy" "Bima" "Rizka" "Zara" "Faroek" "Ibnu" "Hanif"
## [9] "Akmal" "Rara"
Memanggil seluruh baris
kelompok_kkn[3, ]
## nama nim prodi
## 3 Bima 270003 Ekonomi
Elemen Spesifik
kelompok_kkn[3, 2]
## [1] "270003"
Beberapa baris
kelompok_kkn[1:5, ]
## nama nim prodi
## 1 Bayu 280001 Sejarah
## 2 Ardy 210002 Teknik Informatika
## 3 Bima 270003 Ekonomi
## 4 Rizka 260004 Fisika
## 5 Zara 250005 Hukum
Beberapa kolom
kelompok_kkn[, c("nama", "prodi")]
## nama prodi
## 1 Bayu Sejarah
## 2 Ardy Teknik Informatika
## 3 Bima Ekonomi
## 4 Rizka Fisika
## 5 Zara Hukum
## 6 Faroek manajemen
## 7 Ibnu Matematika
## 8 Hanif Sastra Inggris
## 9 Akmal Geografi
## 10 Rara Ilmu Politik
data_kkn <- data.frame(
nama = c(NA, "Ardy", "Bima", "Rizka", "Zara", "Faroek", NA, "Hanif", "Akmal", "Ibnu"),
nim = c("280001", NA, "270003", "260004", "250005", "240006", "230007", "220008", "290009", NA),
prodi = c("Sejarah", "Teknik Informatika", NA, NA, "Hukum", "manajemen", "Matematika", "Sastra Inggris", "Geografi", "Ilmu Politik")
)
data_kkn
## nama nim prodi
## 1 <NA> 280001 Sejarah
## 2 Ardy <NA> Teknik Informatika
## 3 Bima 270003 <NA>
## 4 Rizka 260004 <NA>
## 5 Zara 250005 Hukum
## 6 Faroek 240006 manajemen
## 7 <NA> 230007 Matematika
## 8 Hanif 220008 Sastra Inggris
## 9 Akmal 290009 Geografi
## 10 Ibnu <NA> Ilmu Politik
Mencari posisi Missing Value Menampilkan Boolean Missing Value
is.na(data_kkn)
## nama nim prodi
## [1,] TRUE FALSE FALSE
## [2,] FALSE TRUE FALSE
## [3,] FALSE FALSE TRUE
## [4,] FALSE FALSE TRUE
## [5,] FALSE FALSE FALSE
## [6,] FALSE FALSE FALSE
## [7,] TRUE FALSE FALSE
## [8,] FALSE FALSE FALSE
## [9,] FALSE FALSE FALSE
## [10,] FALSE TRUE FALSE
Menampilkan baris yang mengandung Missing Value
data_kkn[rowSums(is.na(data_kkn)) > 0, ]
## nama nim prodi
## 1 <NA> 280001 Sejarah
## 2 Ardy <NA> Teknik Informatika
## 3 Bima 270003 <NA>
## 4 Rizka 260004 <NA>
## 7 <NA> 230007 Matematika
## 10 Ibnu <NA> Ilmu Politik
Menampilkan Indeks Baris dan Kolom dengan Missing Value
which(is.na(data_kkn), arr.ind = TRUE)
## row col
## [1,] 1 1
## [2,] 7 1
## [3,] 2 2
## [4,] 10 2
## [5,] 3 3
## [6,] 4 3