1. Import Data

# Import data file csv
databaru <- read.csv("C:/Users/USER/Documents/RSTUDIO SD/data_kesehatan.csv")
# Menampilkan baris awal
head(databaru,10)

2. Data Structure

# Melihat struktur data
str(databaru)
## 'data.frame':    200 obs. of  11 variables:
##  $ X                : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ id               : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ umur             : int  33 59 39 64 67 20 45 64 47 42 ...
##  $ jenis_kelamin    : chr  "Perempuan" "Perempuan" "Perempuan" "Laki-laki" ...
##  $ tinggi_badan     : num  160 153 156 174 164 ...
##  $ berat_badan      : num  62.9 54.7 66.8 54.8 62.2 ...
##  $ gula_darah       : num  80.1 79.2 99.6 97.4 49 ...
##  $ tekanan_sistolik : num  129 109 133 109 129 ...
##  $ tekanan_diastolik: num  69.1 73.3 87.1 75.7 82.3 ...
##  $ kolesterol       : num  181 210 176 172 139 ...
##  $ skor_kesehatan   : num  100 100 88.5 100 100 ...
# Ringkasan statistik setiap kolom
summary(databaru)
##        X                id              umur         jenis_kelamin
##  Min.   :  1.00   Min.   :  1.00   Min.   :18.00   Length   :200  
##  1st Qu.: 50.75   1st Qu.: 50.75   1st Qu.:32.00   N.unique :  2  
##  Median :100.50   Median :100.50   Median :43.00   N.blank  :  0  
##  Mean   :100.50   Mean   :100.50   Mean   :44.31   Min.nchar:  9  
##  3rd Qu.:150.25   3rd Qu.:150.25   3rd Qu.:56.00   Max.nchar:  9  
##  Max.   :200.00   Max.   :200.00   Max.   :70.00                  
##   tinggi_badan    berat_badan      gula_darah     tekanan_sistolik
##  Min.   :143.1   Min.   :39.94   Min.   : 49.01   Min.   : 85.29  
##  1st Qu.:159.4   1st Qu.:57.82   1st Qu.: 86.74   1st Qu.:108.77  
##  Median :165.1   Median :63.35   Median :100.44   Median :119.92  
##  Mean   :165.8   Mean   :64.75   Mean   :101.01   Mean   :119.53  
##  3rd Qu.:171.7   3rd Qu.:72.17   3rd Qu.:111.90   3rd Qu.:129.62  
##  Max.   :186.9   Max.   :96.92   Max.   :163.68   Max.   :170.86  
##  tekanan_diastolik   kolesterol     skor_kesehatan  
##  Min.   : 53.05    Min.   : 98.56   Min.   : 45.45  
##  1st Qu.: 74.21    1st Qu.:172.44   1st Qu.: 84.30  
##  Median : 81.64    Median :190.25   Median : 92.92  
##  Mean   : 80.64    Mean   :191.80   Mean   : 89.61  
##  3rd Qu.: 87.18    3rd Qu.:216.47   3rd Qu.:100.00  
##  Max.   :102.84    Max.   :288.72   Max.   :100.00

3. Missing Value

# Mencari missing value (NA/Not Available) pada tiap kolom
colSums(is.na(databaru))
##                 X                id              umur     jenis_kelamin 
##                 0                 0                 0                 0 
##      tinggi_badan       berat_badan        gula_darah  tekanan_sistolik 
##                 0                 0                 0                 0 
## tekanan_diastolik        kolesterol    skor_kesehatan 
##                 0                 0                 0

4. Replace Missing Value

# Tidak ada missing value, sehingga tidak ada NA yang diganti

5. Select Data

# Mengunduh library dplyr untuk memanipulasi, membersihkan, dan mentransformasi data data frame dengan cepat, rapi, dan mudah dibaca.
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
# Pilih kolom yang ingin dilihat
data_pilihan <- select(databaru, umur, jenis_kelamin, gula_darah)
head(data_pilihan)

6. Filter and Sort Data

# Filter data pasien perempuan
data_perempuan <- filter(databaru, jenis_kelamin =="Perempuan")
head(data_perempuan)
# Urutkan berdasarkan umur (ascending: kecil -> besar)
data_perempuan_asc <- arrange(data_perempuan, umur)
head(data_perempuan_asc)

7. Rename and Mutate

# Mengubah nama kolom "id" menjadi "id_pasien"
data_rename <- rename(databaru, id_pasien = id)
data_rename
# Tambahkan kolom proporsi
data_mutate <- mutate(databaru, BMI = berat_badan / (tinggi_badan / 100)^2)
head(data_mutate)
# Mengategorikan jenis usia pasien (Pasien di bawah 40 tahun disebut "Muda", sisanya "Tua")
data_kategori_usia <- mutate(databaru, status_umur = ifelse(umur < 40, "Muda", "Tua"))
head(data_kategori_usia)
# Membuat nama Kolom yang dipilih menjadi huruf besar
data_select_caps <- rename_with(databaru, toupper, .cols = c(id, umur, jenis_kelamin, tinggi_badan, berat_badan, gula_darah, tekanan_sistolik, tekanan_diastolik, kolesterol, skor_kesehatan))
head(data_select_caps)

8. Join Data

# Buat tabel tambahan dengan nama 'data_tambahan'
data_tambahan <- data.frame(
  id = databaru$id,
  kategori = ifelse(databaru$skor_kesehatan >= 75, "Baik", "Perlu Perhatian")
)
# Gabungkan data utama (databaru) dengan data tambahan
data_join <- left_join(databaru, data_tambahan, by = "id")
# Menampilkan hasil gabungan
head(data_join)
# Tampilkan hasil
head(data_join)

9. Group and Summarize

# Kelompokkan data sesuai jenis kelamin, lalu hitung ringkasan statistik berupa rata-rata pada data yang dipilih
data_summary <- databaru %>%
  group_by(jenis_kelamin) %>%
  summarise(
    rata_rata_umur = mean(umur),
    rata_rata_gula_darah = mean(gula_darah),
    rata_rata_skor_kesehatan = mean(skor_kesehatan)
  )
# Menampilkan hasil
data_summary

10. Split Data

# Agar hasil random tetap sama
set.seed(123)
# Membuat indeks random sebanyak 70% dari data
index <- sample(1:nrow(databaru), 0.7 * nrow(databaru))
# Membuat data training
train_data <- databaru[index, ]
# Membuat data testing
test_data <- databaru[-index, ]
# Menampilkan jumlah data
nrow(train_data)
## [1] 140
nrow(test_data)
## [1] 60