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