0Pricing
R Academy · Ders

Hesaplamalarda ve Toplamalarda NA

mean(), sum() ve diğer toplama işlevlerinde NA davranışını denetleyin.

Hesaplamalarda ve Toplamalarda NA, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

na.rm Parametresi

R'deki toplama işlevlerinin çoğu na.rm bağımsız değişkenini kabul eder (NA'yı kaldır). TRUE olarak ayarlandığında işlev, sonucu hesaplamadan önce NA değerlerini yok sayar. Varsayılan olarak na.rm = FALSE olduğundan NA'lar yayılır.

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), '
')   # 403

na.rm ile mean()

mean(x, na.rm = TRUE), eksik olmayan değerlerin aritmetik ortalamasını hesaplar. Payda, toplam uzunluk değil mevcut değerlerin sayısıdır.

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)), '
')

na.rm ile sum()

sum(x, na.rm = TRUE) yalnızca NA olmayan değerleri toplar. NA içerebilen bir logical vektörde TRUE değerlerini saymak veya eksik verilerden toplam hesaplamak için bu gereklidir.

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), '
')

na.rm ile min() ve max()

min() ve max() işlevlerinin de na.rm parametresi vardır. Bu parametre olmadan girdideki tek bir NA, işlevin NA döndürmesine neden olur. na.rm = TRUE ile mevcut değerlerin en küçük veya en büyük değerleri döndürülür.

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), '
')

na.rm ile var() ve sd()

Varyans (var()) ve standart sapma (sd()) da na.rm değerini destekler. İstatistiği yalnızca eksik olmayan gözlemleri kullanarak hesaplar ve serbestlik derecelerini otomatik olarak ayarlar.

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), '
')

na.rm ile median() ve quantile()

median() ve quantile(), aykırı değerlere karşı genellikle ortalamadan daha dayanıklıdır; ancak eksik değerleri doğru işlemek için bunların da na.rm = TRUE değerine ihtiyacı vardır.

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), '
')

na.rm ile prod() ve cumsum()

prod(x, na.rm = TRUE), NA olmayan değerlerin çarpımını hesaplar. cumsum() gibi kümülatif işlevlerde na.rm YOKTUR; NA'lar ilk eksik değerden itibaren yayılır.

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), '
')

Uygulama İşlevlerinde na.rm

Bir matrisin satırları veya sütunları üzerinde apply() kullanırken ... aracılığıyla işleve na.rm = TRUE geçirebilirsiniz. Böylece NA'ları yok sayarak toplama işlemleri yapılır.

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), '
')

na.rm ile rowSums() / colSums()

rowSums() ve colSums() kendilerine ait bir na.rm parametresine sahiptir (... aracılığıyla geçirilmez). na.rm = TRUE kullanıldığında bu işlevler toplamlar için NA'yı 0 olarak ele alır.

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), '
')

Karşılaştırma: na.rm=FALSE ve TRUE

na.rm = TRUE ile FALSE arasında ne zaman seçim yapılacağını anlamak, analiz amacınızla ilgilidir: FALSE, verilerin eksik olduğunu fark etmenizi sağlar; TRUE ise mevcut verilerden en iyi tahmini istatistikleri hesaplar.

# 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
')
}

Kullanıcı İşlevlerinde na.rm

Kendi toplulaştırma işlevlerinizi yazarken bir na.rm parametresi ekleyin ve bunu temel R işlevlerine aktarın. Bu, işlevlerinizin R kurallarıyla tutarlı olmasını sağlar.

# 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), '
')

Hızlı Kontrol

mean(c(10, 20, NA, 40), na.rm = TRUE) ne döndürür?

Özet: Hesaplamalarda NA

Harika! Bu dersten çıkarılacak temel sonuçlar:

  • Çoğu toplulaştırma işlevinde (mean, sum, min, max, sd vb.) bir na.rm parametresi bulunur
  • na.rm = FALSE (varsayılan), NA değerinin sonuca yayıldığı anlamına gelir — herhangi bir değer NA ise sonuç NA olur
  • na.rm = TRUE, NA değerlerini yok sayar ve istatistiği yalnızca mevcut değerlerden hesaplar
  • mean(na.rm=TRUE) için payda, toplam uzunluk değil, NA olmayan değerlerin sayısıdır
  • na.rm=TRUE ile istatistik hesaplamadan önce eksik verilerin oranını mutlaka kontrol edin
  • R kuralını izlemek için kendi toplulaştırma işlevlerinize na.rm ekleyin
# 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), '
')

Sıkça Sorulan Sorular

“Hesaplamalarda ve Toplamalarda NA” dersi ücretsiz mi?

Evet — “Hesaplamalarda ve Toplamalarda NA” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“Hesaplamalarda ve Toplamalarda NA” dersinde ne öğreneceğim?

mean(), sum() ve diğer toplama işlevlerinde NA davranışını denetleyin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Hesaplamalarda ve Toplamalarda NA” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. R'de NA'yı Anlama
  2. Eksik Değerleri Belirleme ve Sayma
  3. NA Değerlerini Kaldırma ve Değiştirme
  4. Hesaplamalarda ve Toplamalarda NA
← R Academy Sayfasına Dön