Lewati ke konten utama

Cara Menggunakan na.rm untuk Menangani Nilai Hilang di R

Kita menetapkan na.rm = TRUE pada fungsi R umum untuk mengecualikan nilai hilang (NA). Ini membantu menghitung statistik yang akurat dan meningkatkan keandalan hasil.
· 8 mnt Baca

Jelajahi bersama AI

Data dihasilkan dan dikonsumsi dalam kecepatan industri untuk mendorong keputusan bisnis utama. Namun, satu tantangan umum dalam analisis data adalah keberadaan nilai hilang. Ini dapat membelokkan hasil, sehingga setiap analis data perlu menanganinya secara efektif. Di R, salah satu alat mendasar untuk mengelola nilai hilang adalah parameter na.rm.

Artikel ini menjelaskan pentingnya menangani data hilang, cara kerja na.rm di R, mendemonstrasikan penggunaannya dalam berbagai fungsi, dan diakhiri dengan membahas beberapa teknik alternatif untuk mengidentifikasi dan menangani data hilang.

Jawaban Singkat: Apa itu na.rm?

Parameter na.rm di R adalah singkatan dari "NA remove" dan mengabaikan nilai NA (hilang) selama perhitungan. Dengan menetapkan na.rm = TRUE, fungsi seperti mean(), sum(), min(), max(), median(), dan sd() menghitung hasil tanpa dipengaruhi oleh nilai hilang.

Parameter na.rm, ditulis dengan huruf kecil, berisi nilai Boolean—TRUE atau FALSE. Saat kita menetapkan na.rm = TRUE, R mengecualikan nilai NA dari perhitungan. Tanpa parameter ini, fungsi akan mengembalikan NA jika ada nilai hilang dalam data. Perhatikan contoh berikut.

vector_with_na <- c(1, 2, NA)

sum(vector_with_na, na.rm = TRUE) # removes NA values — returns 3
sum(vector_with_na) # includes NA values — returns NA
sum(vector_with_na, na.rm = FALSE) # includes NA values — returns NA

Lihat kursus Introduction to R untuk mempelajari lebih lanjut tentang pemrograman R dasar.

Mengapa Menggunakan na.rm?

Menangani nilai hilang sangat penting dalam analisis data untuk memastikan hasil yang akurat, karena dapat berdampak signifikan pada perhitungan statistik dan tanpa sengaja mengarah pada kesimpulan yang keliru. Menggunakan na.rm memudahkan untuk menghindari kesalahan dengan melewati nilai hilang tersebut, sehingga memungkinkan komputasi yang andal dan menjaga integritas data.

Kursus Data Cleaning in R bermanfaat untuk meningkatkan keterampilan analisis data kita.

Fungsi Umum yang Menggunakan na.rm: Beberapa Contoh Praktis

Sekarang, mari pahami cara menggunakan na.rm di R. Beberapa fungsi R mengikutsertakan parameter na.rm (secara default disetel ke FALSE). Berikut beberapa contohnya:

sum()

Sesuai namanya, sum() menghitung total nilai dalam sebuah vektor. Mari buat vektor bernama vector_with_na, yang akan kita gunakan sepanjang tutorial ini.

vector_with_na <- c(1, 2, NA, 4)

sum(vector_with_na) 
# Returns NA

sum(vector_with_na, na.rm = TRUE) 
# Returns 7

mean()

Dengan contoh yang sama, fungsi mean() menghitung mean, yaitu rata-rata nilai dalam vektor kita.

mean(vector_with_na) 
# Returns NA

mean(vector_with_na, na.rm = TRUE) 
# Returns 2.33

sd()

Melanjutkan dengan vector_with_na, sd() menghitung simpangan baku dari vektor.

sd(vector_with_na) 
# Returns NA

sd(vector_with_na, na.rm = TRUE) 
# Returns 1.53

min()

min() menemukan nilai minimum.

min(vector_with_na) 
# Returns NA

min(vector_with_na, na.rm = TRUE) 
# Returns 1

max()

max() menemukan nilai maksimum.

max(vector_with_na) 
# Returns NA

max(vector_with_na, na.rm = TRUE) 
# Returns 4

median()

median() menemukan nilai tengah saat diurutkan.

median(vector_with_na) 
# Returns NA

median(vector_with_na, na.rm = TRUE) 
# Returns 2

Perhatikan bahwa tanpa na.rm = TRUE semua fungsi agregat ini mengembalikan NA.

Dengan menetapkan na.rm = TRUE, fungsi-fungsi ini mengecualikan nilai NA, sehingga menghasilkan komputasi yang akurat dan bermakna. Jalur keterampilan R Programming Fundamentals dapat menjadi sumber yang baik untuk memahami penggunaan dan sintaks fungsi-fungsi ini.

Menangani Nilai Hilang pada Berbagai Struktur Data

Mari lihat cara menangani nilai hilang pada berbagai struktur data. Sebelum lanjut, lihat tutorial Mastering Data Structures in the R Programming Language jika Anda ingin mempelajari lebih lanjut tentang struktur data R. 

Vektor

Pada vektor, na.rm dapat digunakan langsung di dalam fungsi untuk mengecualikan nilai hilang. Contoh yang dibagikan pada bagian sebelumnya semuanya merupakan contoh na.rm saat bekerja pada vektor.

Data frame

Untuk data frame, na.rm dapat diterapkan di dalam fungsi yang digunakan pada kolom tertentu atau lintas baris menggunakan apply() seperti di bawah ini:

apply(X, MARGIN, FUN)

Berikut:

  • X: array, data frame, atau matriks

  • MARGIN: argumen untuk menentukan tempat menerapkan fungsi:

    • MARGIN=1 untuk manipulasi baris

    • MARGIN=2 untuk manipulasi kolom

    • MARGIN=c(1,2) untuk manipulasi baris dan kolom

  • FUN: menentukan fungsi yang akan diterapkan. Fungsi bawaan seperti mean(), median(), sum(), min(), max(), dan fungsi buatan pengguna dapat diterapkan.

Mari buat sebuah data frame sebagai referensi sepanjang tutorial ini.

dataframe_with_na <- data.frame(col1 = c(1, NA, 3, 6), col2 = c(4, 5, NA, 7))

print(dataframe_with_na)
# Returns
#   col1 col2
# 1    1    4
# 2   NA    5
# 3    3   NA
# 4    6    7

apply(dataframe_with_na, 1, mean)
# Returns
# [1] 2.5  NA  NA 6.5

apply(dataframe_with_na, 1, mean, na.rm = TRUE)
# Returns
# [1] 2.5 5.0 3.0 6.5

apply(dataframe_with_na, 2, mean)
# Returns
# col1 col2 
#  NA   NA 

apply(dataframe_with_na, 2, mean, na.rm = TRUE)
# Returns   
#   col1     col2 
# 3.333333 5.333333

List

Fungsi lapply() di R digunakan untuk menerapkan suatu fungsi tertentu ke setiap elemen list, vektor, atau data frame, dan mengembalikan list dengan panjang yang sama. Fungsi ini tidak memerlukan parameter MARGIN, karena secara otomatis menerapkan operasi ke semua elemen.

Sintaks:

lapply(vector_with_na, fun)

Berikut:

  • vector_with_na: List, vektor, atau data frame masukan.
  • fun: Fungsi yang akan diterapkan ke setiap elemen data masukan.

Mari pahami lapply() menggunakan contoh list. Di sini kita memiliki list koleksi (item_1 dan item_2) dengan elemen serupa dengan data frame (dataframe_with_na). Tujuan kita adalah mencari mean dari setiap koleksi.

list_with_na <- list(item_1=c(1, NA, 3, 6), item_2=c(4, 5, NA, 7))

lapply(list_with_na, mean)
# Returns
# $item_1
# [1] NA
# 
# $item_2
# [1] NA

lapply(list_with_na, mean, na.rm =TRUE)
# Returns
# $item_1
# [1] 3.333333
# 
# $item_2
# [1] 5.333333

Fungsi sapply() mirip dengan lapply() tetapi mengembalikan array atau matriks alih-alih list. Mari gunakan list (list_with_na) dan sapply() untuk menghitung mean nilai dari setiap koleksi di dalamnya.

sapply(list_with_na, mean)
# Returns
# a  b 
# NA NA 

sapply(list_with_na, mean, na.rm = TRUE)

# Returns
# a        b 
# 3.333333 5.333333

Sekarang, mari gunakan data frame (dataframe_with_na) dan sapply() untuk menghitung jumlah nilai pada setiap kolom.

sapply(dataframe_with_na, sum)

# Returns
# col1 col2 
# NA   NA 

sapply(dataframe_with_na, sum, na.rm=TRUE)
# Returns
# col1 col2 
# 10   16

Untuk pemahaman yang lebih luas tentang manipulasi data di R, kursus Data Manipulation with dplyr sangat direkomendasikan. Jika Anda merasa kurang mantap dengan keluarga fungsi apply(), baca Tutorial on the R Apply Family kami.

Perbandingan dengan na.omit() dan complete.cases()

na.omit(): Fungsi ini menghapus semua baris yang berisi nilai NA dalam sebuah data frame. Mari pahami melalui contoh:

na.omit(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 4    6    7

complete.cases(): Di sisi lain, complete.cases() mengidentifikasi baris tanpa nilai NA dan mengembalikan boolean yang sesuai untuk setiap baris (FALSE untuk baris dengan NA dan sebaliknya). Ini dapat digunakan untuk memfilter nilai yang tidak hilang dalam data frame, seperti ditunjukkan di bawah.

complete.cases(dataframe_with_na)
# Returns
# [1]  TRUE FALSE FALSE  TRUE

dataframe_with_na[complete.cases(dataframe_with_na), ]
# Returns
# col1 col2
# 1    1    4
# 4    6    7

Teknik Lanjutan untuk Menangani Nilai Hilang

Selain na.rm, R menawarkan metode lanjutan untuk menangani data hilang:

Menggunakan is.na() untuk mengidentifikasi nilai hilang

is.na() dapat langsung diterapkan pada vektor atau data frame untuk mengidentifikasi data hilang. Fungsi ini mengembalikan TRUE untuk setiap nilai yang hilang.

is.na(vector_with_na)
# Returns
# [1] FALSE FALSE  TRUE FALSE

is.na(dataframe_with_na)
# Returns
# col1  col2
# [1,] FALSE FALSE
# [2,]  TRUE FALSE
# [3,] FALSE  TRUE
# [4,] FALSE FALSE

Menerapkan metode imputasi

Imputasi mengganti nilai hilang dengan nilai taksiran, seperti mean atau median, seperti ditunjukkan di bawah:

vector_with_na[is.na(vector_with_na)] <- mean(vector_with_na, na.rm = TRUE)

print(vector_with_na)
# Returns
# [1] 1.000000 2.000000 2.333333 4.000000

dataframe_with_na[is.na(dataframe_with_na)] <- sapply(dataframe_with_na, mean, na.rm=TRUE)
print(dataframe_with_na)
# Returns
# col1     col2
# 1 1.000000 4.000000
# 2 3.333333 5.000000
# 3 3.000000 5.333333
# 4 6.000000 7.000000

Menggunakan fungsi summary()

Menariknya, fungsi summary() berbeda dari penggunaan na.rm dalam menangani nilai hilang. Secara default, summary() secara otomatis mengecualikan nilai hilang saat menghitung statistik ringkasan dan kemudian melaporkan jumlah NA yang ada dalam data.

Mari jalankan summary() pada vektor vector_with_na:

summary(vector_with_na)
#Returns
#   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
#  1.000   1.500   2.000   2.333   3.000   4.000       1

Dan pada data frame dataframe_with_na:

summary(dataframe_with_na)
# Returns
# col1           col2     
# Min.   :1.00   Min.   :4.00  
# 1st Qu.:2.50   1st Qu.:4.75  
# Median :3.00   Median :5.00  
# Mean   :3.25   Mean   :5.25  
# 3rd Qu.:3.75   3rd Qu.:5.50  
# Max.   :6.00   Max.   :7.00 

Kursus Intermediate R menawarkan wawasan mendalam bagi yang tertarik dengan teknik penanganan data tingkat lanjut.

Praktik Terbaik untuk Menangani Nilai Hilang

Menangani nilai hilang secara efektif melibatkan beberapa praktik terbaik:

Selalu periksa nilai hilang

Identifikasi dan pahami sejauh mana data hilang sebelum melakukan perhitungan. Contoh di bawah menunjukkan bahwa data frame memiliki total 2 nilai hilang.

print(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 2   NA    5
# 3    3   NA
# 4    6    7

sum(is.na(dataframe_with_na))
# Returns
# [1] 2

Gunakan pemeriksaan kondisional

Selalu verifikasi keberadaan data hilang dan terapkan teknik imputasi yang sesuai, dengan memastikan semua kasus tepi tertangani dengan baik.

if(any(is.na(dataframe_with_na))) {  
  if (class(dataframe_with_na) == "data.frame") {    
   dataframe_with_na[is.na(dataframe_with_na)] <- sapply(dataframe_with_na, median, na.rm=TRUE)      
  }
}

print(dataframe_with_na)
# Returns
# col1 col2
# 1    1    4
# 2    3    5
# 3    3    5
# 4    6    7

Pertimbangkan konteksnya

Pahami mengapa data hilang dan pilih metode yang tepat untuk menanganinya—penghapusan atau imputasi.

Untuk pendekatan terstruktur terhadap analisis data dan penanganan nilai hilang, kursus Data Cleaning in R dapat menjadi sumber yang sangat baik.

Kesimpulan

Memahami dan menggunakan na.rm adalah kunci untuk memastikan analisis data yang andal dan akurat. Latih penggunaan na.rm dalam proyek R Anda dan jelajahi teknik lanjutan untuk menangani data hilang secara menyeluruh.

Untuk pembelajaran lebih lanjut, jelajahi sumber berikut:

Vidhi Chugh

Penulis

Vidhi Chugh

Saya adalah Penasihat dan Etikus AI yang bekerja di persimpangan ilmu data, produk, dan rekayasa untuk membangun sistem pembelajaran mesin yang dapat diskalakan. Masuk dalam daftar "200 Inovator Bisnis dan Teknologi Teratas" di dunia, saya memiliki misi untuk mendemokratisasi pembelajaran mesin dan menyederhanakan jargon agar semua orang dapat menjadi bagian dari transformasi ini.

Frequently Asked Questions

Apa itu parameter na.rm di R?

Parameter na.rm di R adalah singkatan dari "NA remove." Saat disetel ke TRUE, ini menginstruksikan fungsi untuk mengabaikan nilai NA (hilang) selama perhitungan, sehingga memastikan hasil yang akurat.

Bagaimana cara menggunakan na.rm dalam fungsi R yang umum?

Anda dapat menggunakan na.rm dalam fungsi seperti sum(), mean(), sd(), min(), max(), dan median() dengan menetapkan na.rm = TRUE untuk mengecualikan nilai hilang dari perhitungan.

Mengapa menangani nilai hilang itu penting dalam analisis data?

Nilai hilang dapat membelokkan hasil dan mengarah pada kesimpulan yang tidak akurat. Menanganinya secara efektif memastikan komputasi yang andal dan menjaga integritas data.

Apakah na.rm bisa digunakan dengan data frame dan list di R?

Ya, na.rm dapat digunakan dengan data frame menggunakan fungsi seperti apply(), dan dengan list menggunakan lapply() dan sapply(), untuk mengecualikan nilai hilang selama operasi pada struktur data tersebut.

Apa saja teknik lanjutan untuk menangani nilai hilang di R?

Di luar na.rm, teknik lanjutan mencakup penggunaan is.na() untuk mengidentifikasi nilai hilang, menerapkan metode imputasi untuk menggantinya, serta memanfaatkan fungsi seperti na.omit() dan complete.cases() untuk pembersihan data yang lebih kompleks.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026