R Markdown

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(tidyr)
## Warning: package 'tidyr' was built under R version 4.5.2
 library(ggplot2)

#Load dataset bawaan R

data("presidents")
presidents
##      Qtr1 Qtr2 Qtr3 Qtr4
## 1945   NA   87   82   75
## 1946   63   50   43   32
## 1947   35   60   54   55
## 1948   36   39   NA   NA
## 1949   69   57   57   51
## 1950   45   37   46   39
## 1951   36   24   32   23
## 1952   25   32   NA   32
## 1953   59   74   75   60
## 1954   71   61   71   57
## 1955   71   68   79   73
## 1956   76   71   67   75
## 1957   79   62   63   57
## 1958   60   49   48   52
## 1959   57   62   61   66
## 1960   71   62   61   57
## 1961   72   83   71   78
## 1962   79   71   62   74
## 1963   76   64   62   57
## 1964   80   73   69   69
## 1965   71   64   69   62
## 1966   63   46   56   44
## 1967   44   52   38   46
## 1968   36   49   35   44
## 1969   59   65   65   56
## 1970   66   53   61   52
## 1971   51   48   54   49
## 1972   49   61   NA   NA
## 1973   68   44   40   27
## 1974   28   25   24   24
head(presidents) 
##      Qtr1 Qtr2 Qtr3 Qtr4
## 1945   NA   87   82   75
## 1946   63   50
summary(presidents)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   23.00   46.00   59.00   56.31   69.00   87.00       6

#pendeteksian Missing Values

is.na(presidents)
##   [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [13] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [25] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
##  [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
sum((is.na(presidents)))
## [1] 6
# Visualisasi missing values
library(VIM)  # Library untuk visualisasi missing values
## Warning: package 'VIM' was built under R version 4.5.2
## Loading required package: colorspace
## Warning: package 'colorspace' was built under R version 4.5.2
## Loading required package: grid
## VIM is ready to use.
## Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues
## 
## Attaching package: 'VIM'
## The following object is masked from 'package:datasets':
## 
##     sleep
aggr(presidents, numbers = TRUE, prop = FALSE)

#Imputasi Missing Values

# Mengganti NA dengan median di setiap kolom
presidents[is.na(presidents)] <- median(presidents, na.rm = TRUE)
presidents[is.na(presidents)] <- median(presidents, na.rm = TRUE)

presidents
##      Qtr1 Qtr2 Qtr3 Qtr4
## 1945   59   87   82   75
## 1946   63   50   43   32
## 1947   35   60   54   55
## 1948   36   39   59   59
## 1949   69   57   57   51
## 1950   45   37   46   39
## 1951   36   24   32   23
## 1952   25   32   59   32
## 1953   59   74   75   60
## 1954   71   61   71   57
## 1955   71   68   79   73
## 1956   76   71   67   75
## 1957   79   62   63   57
## 1958   60   49   48   52
## 1959   57   62   61   66
## 1960   71   62   61   57
## 1961   72   83   71   78
## 1962   79   71   62   74
## 1963   76   64   62   57
## 1964   80   73   69   69
## 1965   71   64   69   62
## 1966   63   46   56   44
## 1967   44   52   38   46
## 1968   36   49   35   44
## 1969   59   65   65   56
## 1970   66   53   61   52
## 1971   51   48   54   49
## 1972   49   61   59   59
## 1973   68   44   40   27
## 1974   28   25   24   24
sum(is.na(presidents))
## [1] 0
summary(presidents)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   23.00   46.00   59.00   56.44   68.25   87.00

#Deteksi dan Penanganan Outlier

# Menggunakan metode IQR untuk mendeteksi dataset presidents
Q1 <- quantile(presidents, 0.25)
Q3 <- quantile(presidents, 0.75)
IQR <- Q3 - Q1

# Batas bawah dan atas
lower_bound <- Q1 - 1.5 * IQR
upper_bound <- Q3 + 1.5 * IQR
# Menandai outlier dengan kondisi apakah nilainya di luar batas bawah atau atas
outliersa <- presidents < lower_bound
outliers <- presidents> upper_bound
sum(outliersa)
## [1] 0
sum(outliers)
## [1] 0
# Visualisasi boxplot untuk melihat outlier pada kolom presidents
boxplot(presidents, main = "Boxplot presidents", col = "lightblue")

# Menangani outlier dengan winsorizing (mengganti nilai ekstrem dengan batas)
presidents[outliers] <- ifelse(presidents[outliers] < lower_bound, lower_bound, upper_bound)

#Deteksi dan Hapus Duplikasi

# Cek jumlah duplikasi dalam dataset
sum(duplicated(presidents))  # Menghitung jumlah baris yang duplikat
## [1] 71
# Hapus duplikasi jika ada
presidents <- presidents[!duplicated(presidents)]  # Menyaring hanya baris unik

#Mengecek Data Setelah Preprocessing

# Cek ulang data setelah preprocessing
summary(presidents)  # Menampilkan ringkasan statistik setelah preprocessing
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   23.00   43.00   56.00   55.53   69.00   87.00

#Kesimpulan

Setelah dilakukan preprocessing, dataset presidents telah bersih dari missing values, outlier telah ditangani, dan duplikasi data telah dihapus. Proses ini memastikan data siap digunakan untuk analisis lebih lanjut. Langkah-langkah ini memberikan pemahaman mendalam tentang preprocessing data, yang merupakan tahap penting sebelum melanjutkan analisis atau model prediktif.