Memahami NA dalam R
Pelajari arti NA, alasan nilainya menyebar, dan perbedaannya dengan NULL.
Memahami NA dalam R adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.
Apa itu NA di R?
NA adalah singkatan dari Not Available — ini merepresentasikan nilai yang hilang atau tidak diketahui. Berbeda dari NULL (ketiadaan objek) atau NaN (bukan bilangan), NA merupakan penanda untuk data yang ada tetapi nilainya tidak diketahui.
# NA represents a missing value
height_cm <- c(175, NA, 162, 188, NA, 170)
cat('Heights:', height_cm, '
')
cat('Length:', length(height_cm), '
') # NA counts as an element
cat('Sum:', sum(height_cm), '
') # NA propagatesNA vs NULL
NA adalah nilai yang hilang di dalam vector — tempatnya ada, tetapi nilainya tidak diketahui. NULL adalah ketiadaan suatu objek sepenuhnya — panjangnya 0 dan tidak dapat disimpan di dalam vector.
# NA: element exists, value unknown
vec_with_na <- c(1, NA, 3)
cat('Vector with NA, length:', length(vec_with_na), '
') # 3
# NULL: nothing there at all
vec_with_null <- c(1, NULL, 3)
cat('Vector with NULL, length:', length(vec_with_null), '
') # 2!
# NULL gets dropped; NA is kept
cat('vec_with_na:', vec_with_na, '
')
cat('vec_with_null:', vec_with_null, '
')NA vs NaN
NaN (Not a Number) dihasilkan dari operasi yang tidak terdefinisi secara matematis seperti 0/0 atau sqrt(-1). Ini adalah nilai numerik khusus, sedangkan NA merupakan penanda umum untuk nilai yang hilang dan dapat berlaku pada jenis apa pun.
# NaN from undefined operations
cat('0/0 =', 0/0, '
') # NaN
cat('sqrt(-1) =', sqrt(-1), '
') # NaN (with warning)
cat('Inf - Inf =', Inf - Inf, '
') # NaN
# NaN IS also NA (a special case)
cat('is.nan(NaN):', is.nan(NaN), '
')
cat('is.na(NaN): ', is.na(NaN), '
') # TRUE!
cat('is.nan(NA): ', is.nan(NA), '
') # FALSENA vs Tak Terhingga
Inf dan -Inf merepresentasikan tak terhingga positif dan negatif—keduanya dihasilkan oleh operasi seperti 1/0. Tidak seperti NA, Inf adalah nilai numeric yang diketahui (meskipun ekstrem) dan berpartisipasi secara normal dalam perbandingan.
cat('1/0 =', 1/0, '
') # Inf
cat('-1/0 =', -1/0, '
') # -Inf
cat('Inf + 1 =', Inf + 1, '
') # Inf
cat('Inf > 1000:', Inf > 1000, '
') # TRUE
cat('is.infinite(Inf):', is.infinite(Inf), '
')
cat('is.na(Inf): ', is.na(Inf), '
') # FALSEPropagasi NA dalam Aritmetika
NA bersifat menular dalam aritmetika: operasi apa pun yang melibatkan NA akan menghasilkan NA. Hal ini disengaja—jika salah satu nilai dalam perhitungan tidak diketahui, hasilnya juga tidak diketahui.
x <- NA
cat('NA + 5: ', x + 5, '
') # NA
cat('NA * 0: ', x * 0, '
') # NA (not 0!)
cat('NA == NA:', x == NA, '
') # NA (not TRUE!)
cat('NA > 5: ', x > 5, '
') # NA
cat('sum(1,NA):', sum(1, NA), '
') # NAtypeof(NA) — NA Bertipe
NA bawaan memiliki tipe logical. R menyediakan varian NA bertipe untuk setiap tipe atomik. Varian ini penting saat bekerja dengan vektor bertipe agar tidak terjadi pemaksaan tipe yang tidak diinginkan.
cat('typeof(NA): ', typeof(NA), '
') # logical
cat('typeof(NA_integer_): ', typeof(NA_integer_), '
') # integer
cat('typeof(NA_real_): ', typeof(NA_real_), '
') # double
cat('typeof(NA_complex_): ', typeof(NA_complex_), '
') # complex
cat('typeof(NA_character_):', typeof(NA_character_), '
') # characterNA_integer_ dalam Praktik
Saat membuat vektor bilangan bulat dengan nilai yang hilang, gunakan NA_integer_ agar tipe vektor tetap konsisten. Menggunakan NA biasa dapat menyebabkan pemaksaan implisit ke double dalam konteks tertentu.
# Using plain NA in an integer vector
v1 <- c(1L, 2L, NA, 4L)
cat('typeof with NA: ', typeof(v1), '
') # integer (OK here)
# Explicit typed NA is safer in functions
v2 <- c(1L, 2L, NA_integer_, 4L)
cat('typeof with NA_integer_:', typeof(v2), '
') # integer
# Check they behave the same
cat('Same?', identical(v1, v2), '
')NA_real_ dan NA_character_
NA_real_ digunakan untuk nilai yang hilang dalam vektor double (numeric), sedangkan NA_character_ digunakan untuk string yang hilang. Keduanya sangat penting saat membuat vektor di dalam fungsi yang memerlukan konsistensi tipe.
# Character vector with missing
names_vec <- c('Alice', 'Bob', NA_character_, 'Dave')
cat('Names:', names_vec, '
')
cat('typeof:', typeof(names_vec), '
')
# Numeric with missing
readings <- c(22.5, NA_real_, 21.3, NA_real_, 24.1)
cat('Readings:', readings, '
')
cat('Non-NA count:', sum(!is.na(readings)), '
')NA dalam Operasi Logika
NA dalam operasi logika mengikuti logika tiga nilai: TRUE | NA adalah TRUE (karena TRUE OR apa pun menghasilkan TRUE), tetapi FALSE | NA adalah NA (hasilnya tidak dapat ditentukan tanpa mengetahui nilai NA).
cat('TRUE | NA:', TRUE | NA, '
') # TRUE
cat('FALSE | NA:', FALSE | NA, '
') # NA
cat('TRUE & NA:', TRUE & NA, '
') # NA
cat('FALSE & NA:', FALSE & NA, '
') # FALSE
# Never use == to test for NA!
cat('NA == NA:', NA == NA, '
') # NA (not TRUE!)
cat('is.na(NA):', is.na(NA), '
') # TRUE (correct way)NA dalam Vektor dan Data Frame
Nilai yang hilang sering muncul dalam data dunia nyata. Memahami perilaku NA membantu Anda menafsirkan ringkasan dengan benar, menemukan masalah kualitas data, dan memilih strategi penanganan yang tepat.
ages <- c(25, NA, 32, NA, 29, 41, NA, 35)
cat('Ages:', ages, '
')
cat('Length:', length(ages), '
')
cat('Missing count:', sum(is.na(ages)), '
')
cat('Present count:', sum(!is.na(ages)), '
')
cat('Mean (fails):', mean(ages), '
') # NA
cat('Mean (works):', mean(ages, na.rm = TRUE), '
') # 32.4Tipe NA: Gambaran Lengkap
Berikut ringkasan nilai khusus yang berkaitan dengan NA dalam R:
NA— nilai yang hilang umum (tipe logical)NA_integer_,NA_real_,NA_complex_,NA_character_— NA bertipeNaN— bilangan tak terdefinisi (hasil dari 0/0, sqrt(-1))Inf,-Inf— nilai tak terhingga (hasil dari 1/0)NULL— ketiadaan suatu objek (panjang 0)
# Test functions for special values
x <- c(1, NA, NaN, Inf, -Inf, 0)
cat('Values: ', x, '
')
cat('is.na(): ', is.na(x), '
') # TRUE for NA and NaN
cat('is.nan(): ', is.nan(x), '
') # TRUE only for NaN
cat('is.infinite(): ', is.infinite(x), '
') # TRUE for Inf and -Inf
cat('is.finite(): ', is.finite(x), '
') # TRUE only for normal numbersPemeriksaan Singkat
Dalam R, apa hasil evaluasi NA == NA?
Ringkasan: Memahami NA
Sangat baik! Hal-hal penting dari pelajaran ini:
NA= nilai yang hilang (diketahui ada, tetapi nilainya tidak diketahui)NULL= ketiadaan suatu objek (dihapus dari vektor)NaN= hasil aritmetika yang tidak terdefinisi (juga merupakan NA)Inf/-Inf= nilai tak terhingga (bukan NA)- NA bersifat menular dalam aritmetika—operasi pada NA menghasilkan NA
- Gunakan NA bertipe (
NA_integer_, dan sebagainya) untuk kode yang aman terhadap tipe - Selalu periksa NA dengan
is.na(), jangan dengan== NA
# Key tests side by side
special_vals <- list(NA=NA, NaN=NaN, Inf=Inf, 'NULL-in-vec'=c(1,NULL,3)[2])
for (name in names(special_vals)) {
v <- special_vals[[name]]
cat(name, '| is.na:', is.na(v), '| is.nan:', is.nan(v[!is.infinite(v)]), '
')
}Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memahami NA dalam R” gratis?
Ya — teks lengkap “Memahami NA dalam R” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memahami NA dalam R”?
Pelajari arti NA, alasan nilainya menyebar, dan perbedaannya dengan NULL. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai R Academy?
Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Memahami NA dalam R” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memahami NA dalam R
- Mendeteksi dan Menghitung Nilai yang Hilang
- Menghapus dan Mengganti Nilai NA
- NA dalam Perhitungan dan Agregasi