r语言 - 关于过滤大型数据集的问题



在这里的问题中,我有一个可以追溯到1880年的流行婴儿名字的数据集。我试图找到永恒流行的婴儿名字,这意味着在我的数据中每年最常见的 30 个性别名称。

我尝试过使用group_by、top_n和过滤器,但对程序还不是很好,所以不确定正确的顺序和思维在这里如何。

library(babynames)
timeless <- babynames %>% group_by(name, sex, year) %>% top_n(30) %>% filter()

我得到了一个大型数据表,其中包含每年数据的 30 个最常见的名称,但我想比较一下它以找到每年最常见的名称。我的教授暗示应该有四个永恒的男孩名字,和一个永恒的女孩名字。任何帮助不胜感激!

这是答案。

library(babynames)
library(dplyr)
timeless <- babynames %>% 
group_by(sex, year) %>% 
top_n(30) %>%
ungroup() %>%
count(sex, name) %>%
filter(n == max(babynames$year) - min(babynames$year) + 1)
timeless
# # A tibble: 5 x 3
#   sex   name          n
#   <chr> <chr>     <int>
# 1 F     Elizabeth   138
# 2 M     James       138
# 3 M     John        138
# 4 M     Joseph      138
# 5 M     William     138

关于您的原始代码,group_by(name, sex, year) %>% top_n(30)没有意义,因为namesexyear的所有组合都是唯一的,因此您无需提交"前 30 名"。

最新更新