4 + 2 # Penjumlahan 
## [1] 6
7 - 1 # Pengurangan
## [1] 6
3 * 2 # Perkalian
## [1] 6
18/3 # Pembagian
## [1] 6
2^3 # Pangkat
## [1] 8

Pembuatan Variabel

a <- 10
b <- 5 
c <- a + b
c # Menampilkan nilai variabel
## [1] 15

Struktur Data

vektor <- c(1,2,3,4,5)
vektor
## [1] 1 2 3 4 5

Membuat Vektor Karakter

bunga <- c("mawar","anggrek","tulip","mawar","anggrek","tulip","mawar")
bunga
## [1] "mawar"   "anggrek" "tulip"   "mawar"   "anggrek" "tulip"   "mawar"

Mengonversi ke Faktor

bunga_factor <- factor(bunga)

Menampilkan struktur faktor

str(bunga_factor) # menampilkan struktur dari faktor 'warna_factor"
##  Factor w/ 3 levels "anggrek","mawar",..: 2 1 3 2 1 3 2

Menampilkan level dalam faktor

levels(bunga_factor)
## [1] "anggrek" "mawar"   "tulip"

Frekuensi tiap kategori

table(bunga_factor)
## bunga_factor
## anggrek   mawar   tulip 
##       2       3       2

Membuat list berisi berbagai jenis data

data_list <- list(
  angka = c(10, 20, 30, 40),
  teks = c("A", "B", "C"),
  kategori = factor(c("Baik", "Sedang", "Buruk"))
)
print(data_list) # Menampilkan isi 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 # elemen 'angka'
## [1] 10 20 30 40
data_list[[2]]
## [1] "A" "B" "C"

Membuat dataframe

data_karyawan <- data.frame(
  Nama = c("Aqeela", "Mohan", "Zara", "Fattah"), # kolom nama
  Usia = c(17, 19, 14, 19), # kolom usia
  Pekerjaan = factor(c("Manajer", "Vokalis", "Ballet", "CEO"))
)
print(data_karyawan)
##     Nama Usia Pekerjaan
## 1 Aqeela   17   Manajer
## 2  Mohan   19   Vokalis
## 3   Zara   14    Ballet
## 4 Fattah   19       CEO

Menampilkan Ringkasan Dataframe

summary(data_karyawan)
##      Nama                Usia         Pekerjaan
##  Length:4           Min.   :14.00   Ballet :1  
##  Class :character   1st Qu.:16.25   CEO    :1  
##  Mode  :character   Median :18.00   Manajer:1  
##                     Mean   :17.25   Vokalis:1  
##                     3rd Qu.:19.00              
##                     Max.   :19.00

Membuat array 3 dimensi

array_data <- array(1:24, dim = c(3,4,2))
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) # membuat vektor dengan beberapa nilai NA
is.na(nilai) # mengecek nilai NA dalam vektor
## [1] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
sum(is.na(nilai)) # Menghitung total nilai NA dlm vektor
## [1] 2

Sequence Generation

x1 <- seq(0, 10, length=5)  # Membuat sequence dari 0 hingga 10 dengan 5 elemen
x1  # Menampilkan sequence
## [1]  0.0  2.5  5.0  7.5 10.0
x2 <- seq(0,10,length=6)  # Membuat deret angka dengan 6 elemen
x2
## [1]  0  2  4  6  8 10
x3 <- seq(0,10,length=7)  # Membuat deret angka dengan 7 elemen
x3
## [1]  0.000000  1.666667  3.333333  5.000000  6.666667  8.333333 10.000000
x4 <- seq(0,10,length=10)  # Membuat deret angka dengan 7 elemen
x4
##  [1]  0.000000  1.111111  2.222222  3.333333  4.444444  5.555556  6.666667
##  [8]  7.777778  8.888889 10.000000

Pembulatan Pecahan Desimal

round(x3) # membulatkan nilai 'x3' ke bilangan bulat
## [1]  0  2  3  5  7  8 10
floor(x3) # membulatkan nilai dalam 'x3' ke bawah
## [1]  0  1  3  5  6  8 10
ceiling(x3) # membuat nilai dalam 'x3' ke atas
## [1]  0  2  4  5  7  9 10

Replicate elements of vectors and lists

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

Fungsi Dasar Statistika pada R

# 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 
## [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 Sampel Acak

# 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) 
##  [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) 
##  [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

Manipulasi Data

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## 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)
## Warning: package 'data.table' was built under R version 4.3.3
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
data <- as_tibble(mtcars)
class(data)
## [1] "tbl_df"     "tbl"        "data.frame"
data
## # A tibble: 32 × 11
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
##  2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
##  3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
##  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
##  5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
##  6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
##  7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
##  8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
##  9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
## 10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
## # ℹ 22 more rows
data_slice <- slice(data, 1:15)
data_slice
## # A tibble: 15 × 11
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
##  2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
##  3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
##  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
##  5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
##  6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
##  7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
##  8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
##  9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
## 10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
## 11  17.8     6  168.   123  3.92  3.44  18.9     1     0     4     4
## 12  16.4     8  276.   180  3.07  4.07  17.4     0     0     3     3
## 13  17.3     8  276.   180  3.07  3.73  17.6     0     0     3     3
## 14  15.2     8  276.   180  3.07  3.78  18       0     0     3     3
## 15  10.4     8  472    205  2.93  5.25  18.0     0     0     3     4
arrange(data_slice, desc(data_slice$mpg))
## # A tibble: 15 × 11
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
##  2  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
##  3  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
##  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
##  5  21       6  160    110  3.9   2.62  16.5     0     1     4     4
##  6  21       6  160    110  3.9   2.88  17.0     0     1     4     4
##  7  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
##  8  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
##  9  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
## 10  17.8     6  168.   123  3.92  3.44  18.9     1     0     4     4
## 11  17.3     8  276.   180  3.07  3.73  17.6     0     0     3     3
## 12  16.4     8  276.   180  3.07  4.07  17.4     0     0     3     3
## 13  15.2     8  276.   180  3.07  3.78  18       0     0     3     3
## 14  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
## 15  10.4     8  472    205  2.93  5.25  18.0     0     0     3     4
datatable <- data.table(mtcars)
datatable
##       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##     <num> <num> <num> <num> <num> <num> <num> <num> <num> <num> <num>
##  1:  21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4
##  2:  21.0     6 160.0   110  3.90 2.875 17.02     0     1     4     4
##  3:  22.8     4 108.0    93  3.85 2.320 18.61     1     1     4     1
##  4:  21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1
##  5:  18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2
##  6:  18.1     6 225.0   105  2.76 3.460 20.22     1     0     3     1
##  7:  14.3     8 360.0   245  3.21 3.570 15.84     0     0     3     4
##  8:  24.4     4 146.7    62  3.69 3.190 20.00     1     0     4     2
##  9:  22.8     4 140.8    95  3.92 3.150 22.90     1     0     4     2
## 10:  19.2     6 167.6   123  3.92 3.440 18.30     1     0     4     4
## 11:  17.8     6 167.6   123  3.92 3.440 18.90     1     0     4     4
## 12:  16.4     8 275.8   180  3.07 4.070 17.40     0     0     3     3
## 13:  17.3     8 275.8   180  3.07 3.730 17.60     0     0     3     3
## 14:  15.2     8 275.8   180  3.07 3.780 18.00     0     0     3     3
## 15:  10.4     8 472.0   205  2.93 5.250 17.98     0     0     3     4
## 16:  10.4     8 460.0   215  3.00 5.424 17.82     0     0     3     4
## 17:  14.7     8 440.0   230  3.23 5.345 17.42     0     0     3     4
## 18:  32.4     4  78.7    66  4.08 2.200 19.47     1     1     4     1
## 19:  30.4     4  75.7    52  4.93 1.615 18.52     1     1     4     2
## 20:  33.9     4  71.1    65  4.22 1.835 19.90     1     1     4     1
## 21:  21.5     4 120.1    97  3.70 2.465 20.01     1     0     3     1
## 22:  15.5     8 318.0   150  2.76 3.520 16.87     0     0     3     2
## 23:  15.2     8 304.0   150  3.15 3.435 17.30     0     0     3     2
## 24:  13.3     8 350.0   245  3.73 3.840 15.41     0     0     3     4
## 25:  19.2     8 400.0   175  3.08 3.845 17.05     0     0     3     2
## 26:  27.3     4  79.0    66  4.08 1.935 18.90     1     1     4     1
## 27:  26.0     4 120.3    91  4.43 2.140 16.70     0     1     5     2
## 28:  30.4     4  95.1   113  3.77 1.513 16.90     1     1     5     2
## 29:  15.8     8 351.0   264  4.22 3.170 14.50     0     1     5     4
## 30:  19.7     6 145.0   175  3.62 2.770 15.50     0     1     5     6
## 31:  15.0     8 301.0   335  3.54 3.570 14.60     0     1     5     8
## 32:  21.4     4 121.0   109  4.11 2.780 18.60     1     1     4     2
##       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
datatable$new_col <- datatable$hp
datatable$new_col
##  [1] 110 110  93 110 175 105 245  62  95 123 123 180 180 180 205 215 230  66  52
## [20]  65  97 150 150 245 175  66  91 113 264 175 335 109
setkey(datatable, hp)
key(datatable)
## [1] "hp"
datatable[,.(mean=mean(mpg), IQR=IQR(mpg), median=median(mpg)), by=hp]
## Key: <hp>
##        hp     mean   IQR median
##     <num>    <num> <num>  <num>
##  1:    52 30.40000  0.00  30.40
##  2:    62 24.40000  0.00  24.40
##  3:    65 33.90000  0.00  33.90
##  4:    66 29.85000  2.55  29.85
##  5:    91 26.00000  0.00  26.00
##  6:    93 22.80000  0.00  22.80
##  7:    95 22.80000  0.00  22.80
##  8:    97 21.50000  0.00  21.50
##  9:   105 18.10000  0.00  18.10
## 10:   109 21.40000  0.00  21.40
## 11:   110 21.13333  0.20  21.00
## 12:   113 30.40000  0.00  30.40
## 13:   123 18.50000  0.70  18.50
## 14:   150 15.35000  0.15  15.35
## 15:   175 19.20000  0.50  19.20
## 16:   180 16.30000  1.05  16.40
## 17:   205 10.40000  0.00  10.40
## 18:   215 10.40000  0.00  10.40
## 19:   230 14.70000  0.00  14.70
## 20:   245 13.80000  0.50  13.80
## 21:   264 15.80000  0.00  15.80
## 22:   335 15.00000  0.00  15.00
##        hp     mean   IQR median
plot_data <- ggplot(data,aes(x=mpg, y=disp)) + geom_point(aes(colour=hp)) 
plot_data

LATIHAN 1. Ketikkan perintah di bawah ini dan berikan pernyataan apa saja yang dapat kalian peroleh dari perintah tersebut! —————————————————– nama_vector <- c(5,FALSE,“true”,“8.3”,“Statistika”) nama_vector —————————————————–

nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5"          "FALSE"      "true"       "8.3"        "Statistika"
  1. Cobalah untuk membuat List dengan nama contoh_list yang memiliki elemen sama dengan Latihan no.1, dan panggil seluruh elemen. Berikan perbedaan list dan vector yang dapat kalian peroleh setelah melakukan perintah tersebut
predikat_list <- list(5, FALSE, "true", "4.0", "Cumlaude")
predikat_list
## [[1]]
## [1] 5
## 
## [[2]]
## [1] FALSE
## 
## [[3]]
## [1] "true"
## 
## [[4]]
## [1] "4.0"
## 
## [[5]]
## [1] "Cumlaude"

list dan vector memiliki perbedaan berdasarkan hasil output. list memiliki tipe data yang berbeda dalam satu struktur data (heterogen), sedangkan vector memiliki tipe data yang sama (homogen). elemen dari vector diapit oleh tanda (““) yang menunjukkan bahwa hasilnya merupakan string (karakter).

  1. Dalam melakukan pemanggilan elemen, kita dapat menggunakan index elemen atau nama kolom. Buatlah data frame dengan nama kelompok_kkn berupa tabel tiga kolom terdiri atas: nama,nim, dan prodi. Isikan minimal 10 baris. Lakukan eksperimen pemanggilan isi tabel, meliputi pemanggilan baris, kolom, dan elemen tabel. Jelaskan mengenai perbedaan cara pemanggilan dalam data frame tersebut.
kelompok_kkn <- data.frame(
  Nama = c("Nichole", "Arya", "Calista", "Syach","Noel","Ciara","Vio","Raisa","Victoria","Harry", "Yuka"),  
  NIM = c(2204030201, 2205040302, 2206050403, 2207060504, 2208070605, 2209080706, 2210090807, 2211100908, 2212111009, 2213121110, 2214131211),                  
  Prodi = factor(c("Kesehatan Masyarakat", "Teknik Sipil", "Hukum", "Statistika", "Teknik Informatika","Sistem Informasi", "Komunikasi", "Geografi", "Teknik Elektro", "Psikologi", "PGSD"))  
)

Menampilkan Dataframe

print(kelompok_kkn)
##        Nama        NIM                Prodi
## 1   Nichole 2204030201 Kesehatan Masyarakat
## 2      Arya 2205040302         Teknik Sipil
## 3   Calista 2206050403                Hukum
## 4     Syach 2207060504           Statistika
## 5      Noel 2208070605   Teknik Informatika
## 6     Ciara 2209080706     Sistem Informasi
## 7       Vio 2210090807           Komunikasi
## 8     Raisa 2211100908             Geografi
## 9  Victoria 2212111009       Teknik Elektro
## 10    Harry 2213121110            Psikologi
## 11     Yuka 2214131211                 PGSD

Memanggil Kolom Nama

kelompok_kkn$Nama  
##  [1] "Nichole"  "Arya"     "Calista"  "Syach"    "Noel"     "Ciara"   
##  [7] "Vio"      "Raisa"    "Victoria" "Harry"    "Yuka"

Memanggil Baris Tertentu

kelompok_kkn[2, ]  
##   Nama        NIM        Prodi
## 2 Arya 2205040302 Teknik Sipil

Memanggil Elemen Spesifik

kelompok_kkn[2, 1]  
## [1] "Arya"

Perbedaan: $: digunakan untuk memanggil kolom berdasarkan nama. Hanya dapat memanggil satu kolom [row, coloumn]: digunakan untuk memanggil baris berdasarkan elemen baris dan kolom [row, ][ ,coloumn]: digunakan untuk memanggil seluruh baris atau kolom berdasarkan indeksnya

  1. Buatlah data frame yang beberapa datanya berupa missing value. Carilah letak atau posisi data yang berupa missing value tersebut dengan menggunakan perintah is.na.
kelompok_kkn <- data.frame(
  Nama = c("Nichole", "Arya", "Calista", "Syach", NA,"Ciara", NA, NA,"Victoria","Harry", NA),  
  NIM = c(2204030201, 2205040302, 2206050403, 2207060504, NA, 2209080706, NA, NA, 2212111009, 2213121110, NA),                  
  Prodi = factor(c("Kesehatan Masyarakat", "Teknik Sipil", "Hukum", "Statistika", NA,"Sistem Informasi", NA, NA, "Teknik Elektro", "Psikologi", NA))  
)

Mengecek nilai yang hilang

is.na(kelompok_kkn)
##        Nama   NIM Prodi
##  [1,] FALSE FALSE FALSE
##  [2,] FALSE FALSE FALSE
##  [3,] FALSE FALSE FALSE
##  [4,] FALSE FALSE FALSE
##  [5,]  TRUE  TRUE  TRUE
##  [6,] FALSE FALSE FALSE
##  [7,]  TRUE  TRUE  TRUE
##  [8,]  TRUE  TRUE  TRUE
##  [9,] FALSE FALSE FALSE
## [10,] FALSE FALSE FALSE
## [11,]  TRUE  TRUE  TRUE

Menghitung jumlah nilai NA dalam vektor

sum(is.na(kelompok_kkn))
## [1] 12