Operasi Dasar

Operasi dalam matematika seperti penambahan, pengurangan, pembagian, perkalian, perpangkatan bisa dilakukan di R dengan script seperti ini

2 + 3 # Penjumlahan
## [1] 5
2 - 1 # Pengurangan
## [1] 1
25 / 5 # Pembagian
## [1] 5
2 * 3 # Perkalian
## [1] 6
2 ^ 2 # Perpangkatan
## [1] 4

Pembuatan Varibel

Variabel digunakan untuk menyimpan data. Di R, kita bisa membuat variabel dan mengisinya dengan nilai tertentu, lalu melakukan operasi dengan variabel tersebut.

a <- 4     # Membuat variabel 'a' dan mengisinya dengan nilai 4
b <- 320   # Membuat variabel 'b' dan mengisinya dengan nilai 320
c <- 1 * b # Membuat variabel 'c' dan mengisinya dengan hasil perkalian dari variabel a dengan b
c
## [1] 320

Struktur Data Dasar

R memiliki beberapa struktur data dasar seperti vekor, faktor, list, dan dataframe. #### Membuat Vektor Berisi Numerik Di dalam R, kita bisa membuat vektor karakter menggunakan fungsi c().

ini_vektor <- c(12, 24, 534, 23, 235, 34, 422) # Membuat vektor berisi numerik acak
ini_vektor
## [1]  12  24 534  23 235  34 422

Membuat Vektor Berisi Karakter

as <- c('SSD', 'BK', 'PKO', 'PPKN') # Membuat vektor berisi karakter
as
## [1] "SSD"  "BK"   "PKO"  "PPKN"

Mengonversi ke Faktor

Faktor adalah struktur daya di R yang digunakan untuk menyimpan data kategorikal. Konversi ke faktor memungkinkan kita untuk menganalisis data kategorikal dengan lebih efisien.

as_faktor <- factor(as) # Mengubah vektor karakter menjadi faktor
as_faktor
## [1] SSD  BK   PKO  PPKN
## Levels: BK PKO PPKN SSD

Menmpilkan Struktur Faktor

Fungsi str() digunakan untuk menampilkan struktur dari suatu objek, termasuk faktor. Ini membantu memahami tipe data dan level yang ada dalam faktor.

str(as_faktor) # Menampilkan struktur dari faktor as_faktor
##  Factor w/ 4 levels "BK","PKO","PPKN",..: 4 1 2 3

Menampilkan Level yang Ada dalam Faktor

Level adalah kategori unik dalam faktor. Fungsi levels() digunakan untuk menampilkan semua level yang ada dalam suatu faktor.

levels(as_faktor) #  Menampilkan level atau kategori unik dalam faktor
## [1] "BK"   "PKO"  "PPKN" "SSD"

Frekuensi Tiap Kategori

Fungis table() digunakan untuk menghitung frekuensi masing-masing kategori dalam faktor. Ini berguna untuk analisis data kategorikal.

table(as_faktor) # Menampilkan frekuensi masing-masing kategori dalam faktor
## as_faktor
##   BK  PKO PPKN  SSD 
##    1    1    1    1

Membuat List yang Berisi Berbagai Jenis Data

List adalah struktur data yang dapat menyimpan berbagai jenis data, seperti vektor, faktor, teks dalam satu objek. Ini membuat list sangat fleksibel.

data_list <- list(
  Id = c(1, 2, 3, 4, 5, 6, 7),
  Nama = c('Abdul', 'Burhan', 'Broto', 'Candi', 'Pahsa', 'Ibnu', 'Sina'),
  Kategori = factor(c('Hmm', 'Konyol', 'Sigma', 'Villain', 'Ealah', 'Hai', 'Kata'))
)

Menampilkan Isi List

Fungsi print() digunakan untuk menampilkan seluruh isi list. Ini membantu melihat data yang disimpan dalam list

print(data_list) # Menampilkan seluruh isi list
## $Id
## [1] 1 2 3 4 5 6 7
## 
## $Nama
## [1] "Abdul"  "Burhan" "Broto"  "Candi"  "Pahsa"  "Ibnu"   "Sina"  
## 
## $Kategori
## [1] Hmm     Konyol  Sigma   Villain Ealah   Hai     Kata   
## Levels: Ealah Hai Hmm Kata Konyol Sigma Villain

Mengakses Elemen List

Kita juga bisa mengakses elemen dalam list menggunakan operator $ atau [[]]. Ini memungkinkan kita untuk mengambil data spesifik dari list.

data_list$Id # Mengakses elemen 'Id' dalam list
## [1] 1 2 3 4 5 6 7
data_list$Kategori # Mengakses elemen ketiga dalam list
## [1] Hmm     Konyol  Sigma   Villain Ealah   Hai     Kata   
## Levels: Ealah Hai Hmm Kata Konyol Sigma Villain

Dataframe

Dataframe adalah struktur data tabular yang terdiri dari baris dan kolom. Setiap kolom dapat memiliki tipe data yang berbeda, mirip dengan tabel di databse. #### Membuat Dataframe Di dalam R Kita dapat membuat sebuah dataframe menggunakan syntaks data.frame().

data_mahad <- data.frame(
  Nama = c('Dani', 'Bagas', 'Fairul', 'Taqim'),
  Akt = c(23, 23, 22, 22),
  Prodi = factor(c('SSD', 'PSEJ', 'BK', 'PPKN'))
)

Menampilkan Dataframe

Fungsi print() dapat digunakan utnuk menampilkan seluruh isi dataframe.

print(data_mahad)
##     Nama Akt Prodi
## 1   Dani  23   SSD
## 2  Bagas  23  PSEJ
## 3 Fairul  22    BK
## 4  Taqim  22  PPKN

Menampilkan Ringkasan Dataframe

Fungsi summary() memberikan ringkasan statistik dari dataframe, seperti nilai minimum, maksimum, rata-rata, dan frekuensi untuk data kategorikal.

summary(data_mahad)
##      Nama                Akt        Prodi  
##  Length:4           Min.   :22.0   BK  :1  
##  Class :character   1st Qu.:22.0   PPKN:1  
##  Mode  :character   Median :22.5   PSEJ:1  
##                     Mean   :22.5   SSD :1  
##                     3rd Qu.:23.0           
##                     Max.   :23.0

Array

Array adalah struktur data multidimensi.Array 3 dimensi digunakan untuk menyimpan data dalam bentuk matriks 3D. #### Membuat Array 3 Dimensi

array_data <- array(1:24, dim = c(3, 4, 2)) # Membuat array dengan dimensi 3 x 4 x 2

Menampilkan Array

Kita dapat menampilkan array dengan sintaks menampilkan yaitu print()

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

Fungsi dim() dapat digunakan untuk menampilkan dimensi dan array. ini membantu memahami struktur array.

dim(array_data) # Menampilkan dimensi array_data
## [1] 3 4 2

Membuat Vektor dengan terdapat Nilai NA

Nilai NA (Not Available) digunakan utnuk merepresentasikan data yang hilang. kita bisa membuat vektor yang mengandung nilai NA dan melakukan pengecekan.

nilai <- c(90, 84, 75, NA, 98, NA, 62) # Membuat vektor dengan beberapa nilai NA

# Mengecek nilai yang hilang
is.na(nilai)
## [1] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
# Menghitung jumlah nilai NA dalam vektor
sum(is.na(nilai))
## [1] 2

Sequence Generation

Sequence generation digunakan untuk membuat urutan angka dengan interval tertentu. Fungsi seq() membantu urutan angka dengan panjang atau interval yang ditentukan.

x1 <- seq(0, 10, length=10)
x1
##  [1]  0.000000  1.111111  2.222222  3.333333  4.444444  5.555556  6.666667
##  [8]  7.777778  8.888889 10.000000
x2 <- seq(0, 10, length=4) # Membuat deeret angka dengan 4 elemen
x2
## [1]  0.000000  3.333333  6.666667 10.000000

Pembulatan Bilangan Desimal

R menyediakan fungsi untuk membulatkan angka desimal, seperti berikut:

round(x2) # Membualatkan nilai dalam 'x2' ke bilangan data terdekat
## [1]  0  3  7 10
floor(x1) # Membulatkan nilai dalam 'x1' ke bawah
##  [1]  0  1  2  3  4  5  6  7  8 10
ceiling(x2) # Membulatkan nilai dalam 'x2' ke atas
## [1]  0  4  7 10

Replace Elements of Vectors and Lists

Fungsi rep() digunakan untuk mengulang elemen dalam vektor atau list. Kita bisa mengulang seluruh vektor atau setiap elemennya secara terpisah.

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

R menyediakan fungsi statistik dasar seperti mean(), min() dan lain-lain.

# Membuat data x dan y
x <- c(3, 4, 5, 6) # Membuat vektor x
y <- c(2, 3, 4, 5, 6) # Membuat vektor y
# Menghitung nilai statistik dasar
min(x) # Menghitung nilai minimun dari vektor x
## [1] 3
max(x) # Menghitung nilai maximum dari vektor x
## [1] 6
mean(x) # Menghitung rata-rata dari vektor x
## [1] 4.5
var(y)  # Menghitung variansi dari vektor y
## [1] 2.5
cor(x, y[1:length(x)]) # Menghitung korelasi antara 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 Sampel Acak

Fungsi sample() digunakan untuk mengambil sampel acak dari data . Ini berguna untuk simulasi atau pengambilan sampel secara acak.

# Simulasi pelemparan koin (0 : angka, 1 : gambar)
set.seed(123) # Mengatur seed untuk hasil yang konsisten dan tidak berubah
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)
##  [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

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)

Buat suatu variabel bernama “data” yang berupa data lokal dengan menggunakan tbl_df()

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.
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
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

Ambil data tersebut dari baris pertama hingga ke sepuluh dan masukkan ke dalam variabel baru yaitu data_slice

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

Urutkan data_slice berdasarkan nilai pada kolom Sepal.Length secara descending

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

Buat suatu variabel baru bernama datatable yang memuat data iris dengan menggunakan fungsi data.table

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

Buatlah kolom baru pada tabatable dengan nama new_col menggunakan operator $ dengan elemen sama dengan kolom Species

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

Buatlah keys pada datatable dengan anggota keys berdasarkan kolom Speciies, dan kemudian panggil semua anggota keys dengan fungsi key()

setkey(datatable, Species)
key(datatable)
## [1] "Species"

Hitung mean, interquartile, dan median dari data Sepal.Length berdasarkan grup yang diperoleh dari Species dengan fungsi by

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

Buatlah plot data dengan menggunakan ggplot2 dan simpan plot dalam variabel plot_data. Kemudian tampilkan plot tersebut.

plot_data <- ggplot(data,aes(x=Sepal.Length, y=Sepal.Width)) + geom_point(aes(colour=Species)) 
plot_data

### Latihan dan Jawaban 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 —————————————————– 2. 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 3. 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. 4. Buatlah data frame yang beberapa datanya berupa missing value. Carilah letak atau posisi data yang berupa missing value tersebut dengan menggunakan perintah is.na.

nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5"          "FALSE"      "true"       "8.3"        "Statistika"

Dari perintah no 1 kita dapat ketahui bahwa sintaks yang dibuat tersebut, Karena vector hanya bisa menyimpan satu tipe data, maka seluruh elemen akan dikonversi ke tipe yang erbanyak, dalam perintah ini string menjadi tipe data yang dominan sehingga semua data dalam vektor berisi data string.

contoh_list <- list(
  c(5, FALSE, "true", "8.3", "Statistika")
)
contoh_list
## [[1]]
## [1] "5"          "FALSE"      "true"       "8.3"        "Statistika"

Vector hanya dapat menyimpan satu tipe data dalam satu waktu. Jika ada campuran tipe data, R akan melakukan konversi ke tipe data yang lebih umum (misalnya, semua elemen diubah menjadi character). List dapat menyimpan berbagai tipe data dalam elemen yang berbeda tanpa melakukan coercion. Jika kita melihat output contoh_list, kita akan melihat bahwa setiap elemen tetap mempertahankan tipe datanya sendiri.

kelompok_kkn <- data.frame(
  nama = c("Abdul", "Bagas", "Arbai", "Ariq", "Fairul", "Taqim", "Ucup", "Fikri", "Ridho", "Tsaqif"),
  nim = c(2304220016, 23043773, 2304589002, 2304004533, 1334980835, 143847022, 2404875039, 2304894589, 723587459, 2304032002),
  prodi = c("Statistika dan Sains Data", "Pendidikan Sejarah", "Pendidikan Bahasa Arab", "Pendidikan Kepelatihan Olahraga", "Bimbingan Konseling", "Pendidikan Kewarganegaraan", "Pendidikan Kepelatihan Olahraga", "Manajemen", "Pendidikan Seni Rupa", "Desain Komunikasi Visual")
)
# Memanggil Kolom Nama
kelompok_kkn$nama
##  [1] "Abdul"  "Bagas"  "Arbai"  "Ariq"   "Fairul" "Taqim"  "Ucup"   "Fikri" 
##  [9] "Ridho"  "Tsaqif"
# Memanggil Satu Baris
kelompok_kkn[3, ]
##    nama        nim                  prodi
## 3 Arbai 2304589002 Pendidikan Bahasa Arab
# Memanggil satu elemen spesifik (baris ke-4, kolom ke-2 - NIM Dewi)
kelompok_kkn[4, 2]
## [1] 2304004533
# Membuat Dataframe yang ada missing valunya
kelompok_kkn_missing <- data.frame(
  nama = c("Abdul", "Bagas", NA, "Ariq", "Fairul", "Taqim", "Ucup", NA, "Ridho", NA),
  nim = c(2304220016, 23043773, 2304589002, NA, 1334980835, 143847022, 2404875039, 2304894589, 723587459, 2304032002),
  prodi = c("Statistika dan Sains Data", "Pendidikan Sejarah", "Pendidikan Bahasa Arab", NA, "Bimbingan Konseling", "Pendidikan Kewarganegaraan", "Pendidikan Kepelatihan Olahraga", "Manajemen", "Pendidikan Seni Rupa", NA)
)
# Menampilkan data frame
print(kelompok_kkn_missing)
##      nama        nim                           prodi
## 1   Abdul 2304220016       Statistika dan Sains Data
## 2   Bagas   23043773              Pendidikan Sejarah
## 3    <NA> 2304589002          Pendidikan Bahasa Arab
## 4    Ariq         NA                            <NA>
## 5  Fairul 1334980835             Bimbingan Konseling
## 6   Taqim  143847022      Pendidikan Kewarganegaraan
## 7    Ucup 2404875039 Pendidikan Kepelatihan Olahraga
## 8    <NA> 2304894589                       Manajemen
## 9   Ridho  723587459            Pendidikan Seni Rupa
## 10   <NA> 2304032002                            <NA>
# Mengecek posisi missing values
is.na(kelompok_kkn_missing)
##        nama   nim prodi
##  [1,] FALSE FALSE FALSE
##  [2,] FALSE FALSE FALSE
##  [3,]  TRUE FALSE FALSE
##  [4,] FALSE  TRUE  TRUE
##  [5,] FALSE FALSE FALSE
##  [6,] FALSE FALSE FALSE
##  [7,] FALSE FALSE FALSE
##  [8,]  TRUE FALSE FALSE
##  [9,] FALSE FALSE FALSE
## [10,]  TRUE FALSE  TRUE