Kom igångKom igång gratis

Kategoriska standardvärden

När du delar upp en numerisk vektor behöver du ta ställning till vad som händer om ett värde hamnar exakt på en gräns. Du kan antingen placera värdet i kategorin för det lägre intervallet eller det högre. Det vill säga: du kan välja att dina intervall inkluderar värden vid den övre gränsen men inte den nedre (på matematiskt språk: "öppen till vänster, stängd till höger", eller (lo, hi]). Eller tvärtom ("stängd till vänster, öppen till höger", eller [lo, hi)). cut_by_quantile() ska stödja dessa två val.

Mönstret för kategoriska standardvärden är:

function(cat_arg = c("choice1", "choice2")) {
  cat_arg <- match.arg(cat_arg)
}

Gratis ledtråd: Skriv head(rank) i konsolen för att se början av rank()-definitionen och titta på argumentet ties.method.

Den här övningen är en del av kursen

Introduktion till att skriva funktioner i R

Visa kurs

Övningsinstruktioner

  • Uppdatera signaturen för cut_by_quantile() så att argumentet interval_type kan vara "(lo, hi]" eller "[lo, hi)". Observera mellanslaget efter varje komma.
  • Uppdatera kroppen i cut_by_quantile() så att argumentet interval_type matchas.
  • Ta bort argumentet interval_type från anropet till cut_by_quantile().

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# Set the categories for interval_type to "(lo, hi]" and "[lo, hi)"
cut_by_quantile <- function(x, n = 5, na.rm = FALSE, labels = NULL, 
                            interval_type) {
  # Match the interval_type argument
  ___ <- ___
  probs <- seq(0, 1, length.out = n + 1)
  qtiles <- quantile(x, probs, na.rm = na.rm, names = FALSE)
  right <- switch(interval_type, "(lo, hi]" = TRUE, "[lo, hi)" = FALSE)
  cut(x, qtiles, labels = labels, right = right, include.lowest = TRUE)
}

# Remove the interval_type argument from the call
cut_by_quantile(n_visits, interval_type = "(lo, hi]")
Redigera och kör kod