max([column]),其中name=(name列中的每个唯一名称)表示R中的每一年

max([column]),其中name=(name列中的每个唯一名称)表示R中的每一年,r,R,我正在使用R中的婴儿姓名数据进行练习 total_n <-babynames %>% mutate(name_gender = paste(name,sex))%>% group_by(year) %>% summarise(total_n = sum(n, na.rm=TRUE)) %>% arrange(total_n) bn <- inner_join(babynames,total_n,by = "year") d

我正在使用R中的婴儿姓名数据进行练习

total_n <-babynames %>% 
    mutate(name_gender = paste(name,sex))%>%
    group_by(year) %>%
    summarise(total_n = sum(n, na.rm=TRUE)) %>%
    arrange(total_n)

bn <- inner_join(babynames,total_n,by = "year")

df <- bn%>%
    mutate(pct_of_names = n/total_n)%>%
    group_by(name, year)%>%
    summarise(pct =sum(pct_of_names))
total\u n%
变异(姓名性别=粘贴(姓名性别))%>%
组别(年份)%>%
总结(总数=总和(n,na.rm=TRUE))%>%
安排(总数)
亿元
集团单位(名称、年份)%>%
总结(pct=总和(姓名的pct))
数据帧输出如下所示:


对于每个名字,都有所有年份,以及该年份的相关pct。我一直在为每个名字争取最高的pct。我该怎么做

非常简单,只要您知道
babynames
数据的来源。您拥有所需的一切:

library(dplyr)
library(babynames)

total_n <-babynames %>% 
    mutate(name_gender = paste(name,sex))%>%
    group_by(year) %>%
    summarise(total_n = sum(n, na.rm=TRUE)) %>%
    arrange(total_n)

bn <- inner_join(babynames,total_n,by = "year")

df <- bn%>%
    mutate(pct_of_names = n/total_n)%>%
    group_by(name, year)%>%
    summarise(pct =sum(pct_of_names))
库(dplyr)
图书馆(babynames)
总数%
变异(姓名性别=粘贴(姓名性别))%>%
组别(年份)%>%
总结(总数=总和(n,na.rm=TRUE))%>%
安排(总数)
亿元
集团单位(名称、年份)%>%
总结(pct=总和(姓名的pct))
您错过了最后一步:

df %>%
    group_by(name) %>% 
    filter(pct == max(pct))

# A tibble: 95,025 x 3
# Groups:   name [95,025]
        name  year          pct
       <chr> <dbl>        <dbl>
 1     Aaban  2014 4.338256e-06
 2     Aabha  2014 2.440269e-06
 3     Aabid  2003 1.316094e-06
 4 Aabriella  2015 1.363073e-06
 5      Aada  2015 1.363073e-06
 6     Aadam  2015 5.997520e-06
 7     Aadan  2009 6.031433e-06
 8   Aadarsh  2014 4.880538e-06
 9     Aaden  2009 3.335645e-04
10    Aadesh  2011 1.370356e-06
# ... with 95,015 more row
df%>%
分组单位(名称)%>%
过滤器(pct==最大(pct))
#A tibble:95025x3
#分组:名称[95025]
名称年份pct
1 Aaban 2014 4.338256e-06
2 Aabha 2014 2.440269e-06
3 Aabid 2003 1.316094e-06
4 Aabriella 2015 1.363073e-06
5 Aada 2015 1.363073e-06
6 Aadam 2015 5.997520e-06
7 Aadan 2009 6.031433e-06
8 Aadarsh 2014 4.880538e-06
9 Aaden 2009 3.335645e-04
10 Aadesh 2011 1.370356e-06
# ... 还有95015行

groupby
filter
是您的朋友。

非常简单,只要您知道
babynames
数据的来源。您拥有所需的一切:

library(dplyr)
library(babynames)

total_n <-babynames %>% 
    mutate(name_gender = paste(name,sex))%>%
    group_by(year) %>%
    summarise(total_n = sum(n, na.rm=TRUE)) %>%
    arrange(total_n)

bn <- inner_join(babynames,total_n,by = "year")

df <- bn%>%
    mutate(pct_of_names = n/total_n)%>%
    group_by(name, year)%>%
    summarise(pct =sum(pct_of_names))
库(dplyr)
图书馆(babynames)
总数%
变异(姓名性别=粘贴(姓名性别))%>%
组别(年份)%>%
总结(总数=总和(n,na.rm=TRUE))%>%
安排(总数)
亿元
集团单位(名称、年份)%>%
总结(pct=总和(姓名的pct))
您错过了最后一步:

df %>%
    group_by(name) %>% 
    filter(pct == max(pct))

# A tibble: 95,025 x 3
# Groups:   name [95,025]
        name  year          pct
       <chr> <dbl>        <dbl>
 1     Aaban  2014 4.338256e-06
 2     Aabha  2014 2.440269e-06
 3     Aabid  2003 1.316094e-06
 4 Aabriella  2015 1.363073e-06
 5      Aada  2015 1.363073e-06
 6     Aadam  2015 5.997520e-06
 7     Aadan  2009 6.031433e-06
 8   Aadarsh  2014 4.880538e-06
 9     Aaden  2009 3.335645e-04
10    Aadesh  2011 1.370356e-06
# ... with 95,015 more row
df%>%
分组单位(名称)%>%
过滤器(pct==最大(pct))
#A tibble:95025x3
#分组:名称[95025]
名称年份pct
1 Aaban 2014 4.338256e-06
2 Aabha 2014 2.440269e-06
3 Aabid 2003 1.316094e-06
4 Aabriella 2015 1.363073e-06
5 Aada 2015 1.363073e-06
6 Aadam 2015 5.997520e-06
7 Aadan 2009 6.031433e-06
8 Aadarsh 2014 4.880538e-06
9 Aaden 2009 3.335645e-04
10 Aadesh 2011 1.370356e-06
# ... 还有95015行

groupby
filter
是你的朋友。

omg,真不敢相信这么简单,我在考虑循环。非常感谢。天哪,真不敢相信这么简单,我在考虑循环。非常感谢。