R语言按年份分组计算MMR均值排名、求国家多年平均排名问题
R代码修改方案
核心调整思路
- 补充年度排名计算逻辑:在得到每年各国的平均MMR后,按年份分组完成年度内的升序排名
- 补充跨年度平均排名计算逻辑:按国家分组对多年排名求均值
- 补充Top10筛选逻辑:按平均排名升序排序后取前10条结果
完整可运行代码
library(dplyr) result <- mmr %>% # 计算每年每个国家的平均MMR,适配同国同年多条观测的场景 group_by(country, year) %>% summarise(annual_avg_mmr = mean(mmr, na.rm = TRUE), .groups = "drop_last") %>% # 每年内按平均MMR升序排名,MMR越低排名越靠前 group_by(year) %>% mutate(annual_rank = min_rank(annual_avg_mmr)) %>% # 计算每个国家跨所有年份的平均排名 group_by(country) %>% summarise(mean_rank_across_years = mean(annual_rank, na.rm = TRUE), .groups = "drop") %>% # 按平均排名升序排列,提取平均排名最低的10个国家 arrange(mean_rank_across_years) %>% slice_head(n = 10) # 输出结果表格 result
可选调整说明
如果需要自定义并列排名规则,可替换min_rank函数:
- 用
dense_rank:并列排名不占用后续名次位,比如两个并列第1后下一位是第2 - 用
row_number:强制给相同MMR的国家分配不同排名,避免并列
内容的提问来源于stack exchange,提问作者Scott Hebert
相关产品推荐
相关产品推荐

