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