Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

66 řádky
1.5KB

  1. library(tidyverse)
  2. library(babynames)
  3. # 1)
  4. babynames %>%
  5. filter(year >= 2000) %>%
  6. group_by(sex, name) %>%
  7. summarize(n=sum(n), .groups="drop") ->
  8. bn20
  9. # 2)
  10. bn20 %>%
  11. group_by(name) %>%
  12. pivot_wider(names_from="sex", values_from="n") %>%
  13. rename(female = "F", male = "M") %>%
  14. filter(female > 0 & male > 0 & (female+male) > 1e5) %>%
  15. arrange(abs(female - male) / (male + female)) ->
  16. bn20_sim
  17. # 3)
  18. bn20 %>% group_by(name_length = nchar(name)) %>% summarize(n=sum(n))
  19. # 4)
  20. min_len <- min(nchar(bn20$name))
  21. bn20 %>% filter(nchar(name) == min_len) %>% arrange(desc(n))
  22. # 5)
  23. babynames %>%
  24. group_by(year, sex) %>%
  25. summarize(avg_len = mean(nchar(name))) ->
  26. bn_avg_len
  27. bn_avg_len %>%
  28. ggplot() +
  29. geom_line(aes(x=year, y=avg_len, color=sex))
  30. # 6)
  31. babynames %>%
  32. select(-prop) %>%
  33. filter(year >= 2000) ->
  34. bn
  35. # Annahme: "Neue" Namen die im Vorjahr noch nicht in bn auftauchen
  36. # werden ausgewertet mit n_prev = 0
  37. replace_with_zero <- function(x) {
  38. x[is.na(x)] <- 0
  39. x
  40. }
  41. bn %>%
  42. filter(year > 2000) %>%
  43. left_join(mutate(bn, year = year + 1, n_prev = n, n = NULL)) %>%
  44. mutate(n_prev = replace_with_zero(n_prev)) ->
  45. bn_prev
  46. # Wenn das nicht erwünscht, führe man diese Zeile aus
  47. # bn %>% inner_join(mutate(bn, year = year + 1, n_prev = n, n = NULL)) -> bn_prev
  48. n_mean <- mean(bn$n)
  49. bn_prev %>%
  50. mutate(s_incr = (n-n_prev)/(n_prev + n_mean)) %>%
  51. group_by(year, sex) %>%
  52. slice_max(s_incr, n = 3) ->
  53. bn_trending