Membaca Data
data <- read.csv("data.csv", sep = ";")
library(car)
## Loading required package: carData
Eskplorasi Data
### Struktur data
str(data)
## 'data.frame': 13 obs. of 5 variables:
## $ Nama : chr "Anton" "Ahmad" "Bayu" "Rois" ...
## $ Tinggi : int 160 163 170 155 165 180 175 170 175 173 ...
## $ Pendidikan: chr "S3" "S2" "S3" "S1" ...
## $ Pendapatan: int 5000000 3000000 5000000 2000000 500000 5000000 500000 3000000 5000000 4000000 ...
## $ Pekerjaan : chr "Wiraswasta" "Wiraswasta" "Wiraswasta" "Pelajar" ...
### Ringkasan data secara umum
summary(data)
## Nama Tinggi Pendidikan Pendapatan
## Length:13 Min. :155.0 Length:13 Min. : 500000
## Class :character 1st Qu.:165.0 Class :character 1st Qu.:2500000
## Mode :character Median :170.0 Mode :character Median :3500000
## Mean :169.4 Mean :3269231
## 3rd Qu.:175.0 3rd Qu.:5000000
## Max. :180.0 Max. :5000000
## Pekerjaan
## Length:13
## Class :character
## Mode :character
##
##
##
### Jumlah pendidikan per-kategori
table(data$Pendidikan)
##
## S1 S2 S3 SMA
## 3 5 2 3
### Jumlah pendapatan per-kategori
table(data$Pendapatan)
##
## 500000 2000000 2500000 3000000 3500000 4000000 5000000
## 2 1 1 2 2 1 4
### Jumlah pekerjaan per-kategori
table(data$Pekerjaan)
##
## Pelajar Wiraswasta
## 3 10
Statistika Deskriptif
shapiro.test(data$Tinggi) #mean digunakan karena distribusi data normal
##
## Shapiro-Wilk normality test
##
## data: data$Tinggi
## W = 0.95659, p-value = 0.7005
mean(data$Tinggi)
## [1] 169.3846
shapiro.test(data$Pendapatan) #median digunakan karena distribusi data tidak normal
##
## Shapiro-Wilk normality test
##
## data: data$Pendapatan
## W = 0.89046, p-value = 0.09896
median(data$Pendapatan)
## [1] 3500000
Rekomendasi
### Menghitung skor untuk setiap kandidat berdasarkan kriteria yang ditetapkan
data$Skor <- (as.numeric(factor(data$Pendidikan)) * 0.5) +
(as.numeric(factor(data$Pendapatan)) * 0.3) +
(data$Tinggi * 0.2)
data$Skor
## [1] 35.6 34.8 37.6 32.1 35.3 39.1 37.3 37.2 38.1 36.9 36.2 35.5 37.9
### Normalisasi skor ke dalam rentang 0-100
min_skor <- min(data$Skor)
min_skor
## [1] 32.1
maks_skor <- max(data$Skor)
maks_skor
## [1] 39.1
data$Skor <- ((data$Skor - min_skor) / (maks_skor - min_skor)) * 100
data$Skor
## [1] 50.00000 38.57143 78.57143 0.00000 45.71429 100.00000 74.28571
## [8] 72.85714 85.71429 68.57143 58.57143 48.57143 82.85714
### Memilih kandidat dengan skor tertinggi sebagai pasangan ideal
kandidat_ideal <- data[which.max(data$Skor), ]
kandidat_ideal
## Nama Tinggi Pendidikan Pendapatan Pekerjaan Skor
## 6 Prasetyo 180 S2 5000000 Wiraswasta 100
### Lampiran tabel skor
skor_df <- data.frame(Nama = data$Nama, Skor = data$Skor)
skor_df
## Nama Skor
## 1 Anton 50.00000
## 2 Ahmad 38.57143
## 3 Bayu 78.57143
## 4 Rois 0.00000
## 5 Malik 45.71429
## 6 Prasetyo 100.00000
## 7 Dewa 74.28571
## 8 Yudha 72.85714
## 9 Eki 85.71429
## 10 Farras 68.57143
## 11 Saputra 58.57143
## 12 Elvies 48.57143
## 13 Rahmat 82.85714