NA dalam Perhitungan dan Agregasi
Kendalikan perilaku NA dalam mean(), sum(), dan fungsi agregat lainnya.
NA dalam Perhitungan dan Agregasi adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Parameter na.rm
Sebagian besar fungsi agregasi R menerima argumen na.rm (NA remove). Jika diatur ke TRUE, fungsi tersebut mengabaikan nilai NA sebelum menghitung hasil. Secara bawaan, na.rm = FALSE, sehingga NA terus menyebar.
scores <- c(88, NA, 72, 95, NA, 81, 67)
cat('With na.rm=FALSE (default):
')
cat(' mean:', mean(scores), '
') # NA
cat(' sum: ', sum(scores), '
') # NA
cat('With na.rm=TRUE:
')
cat(' mean:', mean(scores, na.rm = TRUE), '
') # 80.6
cat(' sum: ', sum(scores, na.rm = TRUE), '
') # 403mean() dengan na.rm
mean(x, na.rm = TRUE) menghitung mean aritmetika dari nilai yang tidak hilang. Penyebutnya adalah jumlah nilai yang ada, bukan panjang total vektor.
temperatures <- c(22.1, NA, 19.8, 25.1, NA, 17.3, 20.0)
cat('Total elements:', length(temperatures), '
')
cat('Present elements:', sum(!is.na(temperatures)), '
')
cat('Mean (na.rm=TRUE):', mean(temperatures, na.rm = TRUE), '
')
# Manual verification
cat('Manual mean:', sum(temperatures, na.rm=TRUE) / sum(!is.na(temperatures)), '
')sum() dengan na.rm
sum(x, na.rm = TRUE) hanya menjumlahkan nilai yang bukan NA. Ini penting untuk menghitung nilai TRUE dalam vektor logical yang mungkin berisi NA, atau menghitung total dari data yang tidak lengkap.
sales_daily <- c(1200, NA, 980, 1450, NA, 1100, 890)
cat('Sum (default):', sum(sales_daily), '
') # NA
cat('Sum (na.rm): ', sum(sales_daily, na.rm = TRUE), '
') # 5620
# Count observations meeting a condition (NA-safe)
cat('Days over 1000:', sum(sales_daily > 1000, na.rm = TRUE), '
')min() dan max() dengan na.rm
min() dan max() juga memiliki parameter na.rm. Tanpa parameter tersebut, satu NA dalam input menyebabkan fungsi mengembalikan NA. Dengan na.rm = TRUE, nilai ekstrem dari nilai yang ada akan dikembalikan.
blood_pressure <- c(120, NA, 135, 118, NA, 142, 125, NA, 130)
cat('Max BP (default):', max(blood_pressure), '
') # NA
cat('Max BP (na.rm): ', max(blood_pressure, na.rm = TRUE), '
') # 142
cat('Min BP (na.rm): ', min(blood_pressure, na.rm = TRUE), '
') # 118
cat('Range (na.rm): ', range(blood_pressure, na.rm = TRUE), '
')var() dan sd() dengan na.rm
Varians (var()) dan simpangan baku (sd()) juga mendukung na.rm. Keduanya menghitung statistik hanya menggunakan observasi yang tidak hilang dan secara otomatis menyesuaikan derajat kebebasan.
exam_scores <- c(78, 85, NA, 92, 68, 75, NA, 88, 91, NA)
n_valid <- sum(!is.na(exam_scores))
cat('Valid observations:', n_valid, '
')
cat('Mean: ', round(mean(exam_scores, na.rm = TRUE), 2), '
')
cat('SD: ', round(sd(exam_scores, na.rm = TRUE), 2), '
')
cat('Var: ', round(var(exam_scores, na.rm = TRUE), 2), '
')median() dan quantile() dengan na.rm
median() dan quantile() sering kali lebih tahan terhadap pencilan daripada mean, tetapi keduanya juga memerlukan na.rm = TRUE agar dapat menangani nilai yang hilang dengan benar.
incomes <- c(45000, NA, 52000, 48000, NA, 210000, 51000, NA, 49000)
cat('Observations:', sum(!is.na(incomes)), '
')
cat('Median income:', median(incomes, na.rm = TRUE), '
')
cat('Mean income: ', mean(incomes, na.rm = TRUE), '
') # pulled up by 210000
cat('25th pctile: ', quantile(incomes, 0.25, na.rm = TRUE), '
')
cat('75th pctile: ', quantile(incomes, 0.75, na.rm = TRUE), '
')prod() dan cumsum() dengan na.rm
prod(x, na.rm = TRUE) menghitung hasil kali nilai yang bukan NA. Fungsi kumulatif seperti cumsum() TIDAK memiliki na.rm—NA terus menyebar mulai dari nilai pertama yang hilang.
growth_rates <- c(1.05, NA, 1.03, 1.08, NA, 1.02)
cat('Product of rates:', prod(growth_rates, na.rm = TRUE), '
')
# cumsum propagates NAs
values <- c(10, 20, NA, 40, 50)
cat('cumsum (with NA):', cumsum(values), '
')
# Workaround: replace NA first
filled <- replace(values, is.na(values), 0)
cat('cumsum (NA=0): ', cumsum(filled), '
')na.rm dalam Fungsi Apply
Saat menggunakan apply() pada baris atau kolom matriks, Anda dapat meneruskan na.rm = TRUE ke fungsi menggunakan .... Dengan demikian, agregasi dihitung sambil mengabaikan NA.
m <- matrix(c(88,NA,72, 95,81,NA, 67,75,90), nrow = 3)
cat('Matrix:
'); print(m)
# Row means ignoring NAs
cat('Row means (na.rm=TRUE):', apply(m, 1, mean, na.rm = TRUE), '
')
# Col means ignoring NAs
cat('Col means (na.rm=TRUE):', apply(m, 2, mean, na.rm = TRUE), '
')rowSums() / colSums() dengan na.rm
rowSums() dan colSums() memiliki parameter na.rm sendiri (tidak diteruskan melalui ...). Penggunaan na.rm = TRUE membuat keduanya memperlakukan NA sebagai 0 dalam penjumlahan.
sales <- matrix(c(100,NA,80, NA,90,70, 110,85,NA), nrow = 3)
cat('Sales matrix:
'); print(sales)
cat('Row sums (na.rm=F):', rowSums(sales), '
') # NAs propagate
cat('Row sums (na.rm=T):', rowSums(sales, na.rm = TRUE), '
')
cat('Col means (na.rm=T):', colMeans(sales, na.rm = TRUE), '
')Perbandingan: na.rm=FALSE vs TRUE
Memahami kapan menggunakan na.rm = TRUE dibandingkan FALSE bergantung pada tujuan analisis Anda: FALSE memastikan Anda mengetahui bahwa data tidak lengkap; TRUE menghitung statistik perkiraan terbaik dari data yang tersedia.
# Always check: how much data is missing BEFORE using na.rm=TRUE
collected <- c(78, NA, 85, NA, 91, 74, NA, 88, 82, NA)
pct_missing <- mean(is.na(collected)) * 100
cat('Missing:', round(pct_missing, 1), '% of data
')
if (pct_missing < 20) {
cat('Acceptable: computing mean with na.rm=TRUE
')
cat('Mean:', round(mean(collected, na.rm = TRUE), 2), '
')
} else {
cat('Too much missing data — investigate before computing
')
}na.rm dalam Fungsi Pengguna
Saat menulis fungsi agregasi Anda sendiri, sertakan parameter na.rm dan teruskan parameter tersebut ke fungsi R dasar. Dengan begitu, fungsi Anda konsisten dengan konvensi R.
# Custom function with na.rm support
cv <- function(x, na.rm = FALSE) {
# Coefficient of Variation = SD / mean
s <- sd(x, na.rm = na.rm)
m <- mean(x, na.rm = na.rm)
return(s / m)
}
readings <- c(22.1, NA, 19.8, 25.1, NA, 17.3, 20.0)
cat('CV (na.rm=FALSE):', cv(readings), '
') # NA
cat('CV (na.rm=TRUE): ', round(cv(readings, na.rm = TRUE), 4), '
')Pemeriksaan Singkat
Apa hasil dari mean(c(10, 20, NA, 40), na.rm = TRUE)?
Ringkasan: NA dalam Perhitungan
Bagus sekali! Hal-hal penting dari pelajaran ini:
- Sebagian besar fungsi agregasi (
mean,sum,min,max,sd, dan sebagainya) memiliki parameterna.rm na.rm = FALSE(bawaan) berarti NA diteruskan—jika ada nilai yang merupakan NA, hasilnya adalah NAna.rm = TRUEmengabaikan NA dan menghitung statistik hanya dari nilai yang tersedia- Penyebut untuk
mean(na.rm=TRUE)adalah jumlah nilai yang bukan NA, bukan panjang total - Selalu periksa proporsi data yang hilang sebelum menghitung statistik dengan
na.rm=TRUE - Sertakan
na.rmdalam fungsi agregasi Anda sendiri untuk mengikuti konvensi R
# Complete summary with na.rm
data_vec <- c(55, NA, 72, 88, NA, 61, 79, NA, 93, 68)
cat('N valid:', sum(!is.na(data_vec)), '
')
cat('Mean: ', round(mean(data_vec, na.rm=TRUE), 2), '
')
cat('Median:', median(data_vec, na.rm=TRUE), '
')
cat('SD: ', round(sd(data_vec, na.rm=TRUE), 2), '
')
cat('Min: ', min(data_vec, na.rm=TRUE), '
')
cat('Max: ', max(data_vec, na.rm=TRUE), '
')Pertanyaan yang Sering Diajukan
Apakah pelajaran “NA dalam Perhitungan dan Agregasi” gratis?
Ya — teks lengkap “NA dalam Perhitungan dan Agregasi” 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 “NA dalam Perhitungan dan Agregasi”?
Kendalikan perilaku NA dalam mean(), sum(), dan fungsi agregat lainnya. 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 4 dari 4.
Berapa lama pelajaran “NA dalam Perhitungan dan Agregasi” 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