Menangani Data yang Hilang
Pelajaran 11 dari 14 dalam kursus Manipulasi Data dengan R di Coddy.
Nilai yang hilang biasanya direpresentasikan sebagai <strong>NA</strong> (Tidak Tersedia). Mari pelajari strategi untuk mengidentifikasi, menghapus, dan mengimputasi nilai yang hilang.
Mengidentifikasi Data yang Hilang
Untuk memeriksa nilai yang hilang di R, kamu bisa menggunakan fungsi berikut:
# Periksa apakah suatu nilai adalah NA
is.na(x)
# Hitung jumlah NA dalam sebuah vektor
sum(is.na(x))
# Identifikasi baris yang mengandung NA dalam sebuah data frame
complete.cases(df)Menghapus Data yang Hilang
Kamu bisa menghapus baris yang memiliki nilai hilang menggunakan cara berikut:
# Hapus baris yang memiliki NA
df_clean <- na.omit(df)
# Gunakan dplyr untuk menghapus baris dengan NA pada kolom tertentu
library(dplyr)
df_clean <- df %>% filter(!is.na(column_name))Mengimputasi Data yang Hilang
Imputasi melibatkan penggantian nilai yang hilang dengan nilai perkiraan. Berikut beberapa teknik imputasi yang umum:
# Imputasi dengan nilai rata-rata
df$column[is.na(df$column)] <- mean(df$column, na.rm = TRUE)
# Imputasi dengan nilai median
df$column[is.na(df$column)] <- median(df$column, na.rm = TRUE)
# Imputasi dengan modus untuk data kategoris
mode_value <- names(sort(table(df$category), decreasing = TRUE))[1]
df$category[is.na(df$category)] <- mode_valuePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Tantangan
SedangBuat fungsi yang memproses dataset berisi informasi tentang pasien dan hasil tes medis mereka. Fungsi tersebut harus melakukan operasi berikut:
- Ubah string input menjadi data frame
- Identifikasi dan hitung jumlah nilai yang hilang di setiap kolom
- Hapus baris yang memiliki nilai hilang di kolom 'age' atau 'test_result'
- Isi nilai yang hilang di kolom 'blood_pressure' dengan nilai median
- Buat kolom baru 'status' berdasarkan 'test_result':
- Jika test_result hilang, tetapkan status menjadi "Unknown"
- Jika test_result kurang dari 50, tetapkan status menjadi "Normal"
- Jika test_result sama dengan atau lebih besar dari 50, tetapkan status menjadi "Elevated"
- Cetak informasi berikut:
- Jumlah nilai yang hilang di setiap kolom sebelum pemrosesan
- Jumlah baris yang dihapus
- Median tekanan darah yang digunakan untuk pengisian
- Data frame yang telah diproses
Coba sendiri
# Baca input
con <- file("stdin", "r")
input_string <- suppressWarnings(readLines(con))
# Ubah string input menjadi data frame
data <- read.csv(text = input_string, stringsAsFactors = FALSE)
# TODO: Tulis kodemu di bawah ini
# 1. Identifikasi dan hitung nilai yang hilang
# 2. Hapus baris dengan nilai yang hilang pada 'age' atau 'test_result'
# 3. Isi nilai yang hilang pada 'blood_pressure'
# 4. Buat kolom 'status'
# 5. Cetak informasi yang diperlukan
# Tempat penampung untuk output
cat("Missing values in each column before processing:\n")
print(missing_counts)
cat("\nNumber of rows removed:\n")
print(rows_removed)
cat("\nMedian blood pressure used for imputation:\n")
print(median_bp)
cat("\nProcessed data:\n")
print(data_clean)Semua pelajaran di Manipulasi Data dengan R
Latihan sendiri: Compiler R online