Поиск года с равными вхождениями - PullRequest
0 голосов
/ 07 марта 2020

Я использую пакет babynames, чтобы выяснить, когда определенное имя (например, Алекс) было ближе к равному количеству мальчиков и девочек с таким именем.

В настоящее время у меня есть, но я не уверен, какую математику нужно сделать, чтобы узнать, когда это имя было наиболее унисексом, поскольку оно, вероятно, не было идеальным 50/50.

Alex <- babynames %>%
  filter(name == "Alex", year >=1920) %>%
  group_by(year, sex) %>%
  summarise(n = sum(n)) %>%
  mutate(n = n/sum(n) * 100)

Спасибо.

1 Ответ

3 голосов
/ 07 марта 2020

Графически:

library(babynames)
library(dplyr)
library(ggplot2)
babynames %>%
  filter(name == "Alex", year >=1920) %>%
  ggplot(aes(year, n, color=sex)) +
  geom_line()

Численно:

library(tidyr)
babynames %>%
filter(name == "Alex", year >=1920) %>%
group_by(year) %>% 
mutate(pct = n / sum(n, na.rm = TRUE)) %>% 
ungroup() %>% 
select(year, name, pct, sex) %>% 
pivot_wider(names_from = sex, values_from = pct) %>% 
mutate(diff = abs(F - M)) %>% 
arrange(diff)

Для всех имен:

babynames %>%
  filter(year >=1920) %>%
  group_by(name, year) %>% 
  mutate(pct = n / sum(n, na.rm = TRUE),
         total = sum(n)) %>% 
  ungroup() %>% 
  select(year, name, total, pct, sex) %>% 
  pivot_wider(names_from = sex, values_from = pct) %>% 
  mutate(diff = abs(F - M)) %>% 
  arrange(diff)

Не уверен насчет этого набора данных;)

babynames %>%
  filter(name == "Othello", year ==1920)
   year sex   name        n       prop
  <dbl> <chr> <chr>   <int>      <dbl>
1  1920 F     Othello     8 0.00000643
2  1920 M     Othello     8 0.00000727
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...