101  Question

Schlüsselwörter

Aufgaben, Statistik, Prognose, Modellierung, R, Datenanalyse, Regression

Schreiben Sie eine Funktion zur Berechnung der Anzahl der fehlenden Werte in einem (numerischen) Vektor!

Hinweise:

102 Solution


na_n <- function(num_vec) {
  # input: num. vector (int or double)
  # value: count of missing values (double)
  
  if (!is.numeric(num_vec)) stop("Numeric input is needed!")
  out <- sum(is.na(num_vec))
  return(out)
  
}

Test:

x <- c(1,2, NA, NA)
x2 <- c("A", "B", NA)

na_n(x)
## [1] 2

Bei x2 sollte ein Fehler aufgeworfen werden:

na_n(x2)
## Error in `na_n()`:
## ! Numeric input is needed!

Gut!

Testen wir weiter, jetzt mit dem Datensatz mtcars:

mtcars[1, c(1,2,3,4)] <- NA  # Zeilen/Spalte

mtcars %>% 
  summarise(mpg_na_n = na_n(mpg))

BONUS!

Verwenden Sie across(), um die fehlenden Werte in allen Spalten von mtcars zu zählen.

Wer schnell ist, der nehme gerne nycflights13::flights (aus dem Paket nycflights13 oder per CSV-Datei aus geeigneter Stelel aus dem Internet. Meistens geht es schneller, die Daten aus einem Paket zu laden mit data(flights) nachdem man library(nycflights13) geschrieben hat).

mtcars %>% 
  summarise(across(everything(), na_n)) 

Mit pivot_longer() ist es häufig übersichtlicher bzw. besser für weitere Bearbeitungsschritte, wie das folgende Beispiel zeigt:

flights:

data(flights, package = "nycflights13")

flights %>% 
  select(where(is.numeric)) %>% 
  summarise(across(everything(),
                   na_n)) %>% 
  pivot_longer(everything()) %>% 
  arrange(-value) %>%  # Sortiere absteigend nach Anzahl der fehlenden Werte
  filter(value > 0)  # Zeige nur Variablen mit fehlenden Werten

103 Meta-information

extype: string exsolution: NA exname: funs-na-n expoints: 1