在这里的问题中,我有一个可以追溯到1880年的流行婴儿名字的数据集。我正在努力寻找永恒流行的婴儿名字,这意味着在我的数据中,每年都有30个最常见的性别名称。
我尝试过使用group_by、top_n和filter,但我对这个程序还不是很熟悉,所以不确定这里的正确顺序和思路。
library(babynames)
timeless <- babynames %>% group_by(name, sex, year) %>% top_n(30) %>% filter()我正在得到一个大型数据表,其中包含每年数据的30个最常见的名称,但我希望通过比较它们来找到每年最常见的名称。我的教授暗示应该有四个永恒的男孩名字和一个永恒的女孩名字。如有任何帮助,我们不胜感激!
发布于 2019-09-26 08:27:34
这就是答案。
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)没有意义,因为name、sex和year的所有组合都是唯一的,因此没有什么可以让您筛选出“前30名”。
https://stackoverflow.com/questions/58107908
复制相似问题