You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R语言计算奥运会金牌运动员的连续夺冠次数

思路梳理:计算奥运会运动员最长连续夺冠次数

嘿,针对你的需求,给你几个实用的思路方向,不用纠结之前的代码问题啦:

  • 分组后处理年份序列的连续性
    首先用group_by(id, name)把每个运动员的数据单独分组,接着用arrange(year)确保年份是按顺序排列的。之后可以用diff(year)计算相邻年份的差值——连续夺冠的话差值应该是4。接下来用cumsum()来生成“分组标识”:当差值不等于4时,就开启一个新的分组。最后对每个分组统计数量,再用max()取出每个运动员的最大连续次数(注意:哪怕只有1次夺冠,次数也是1)。

  • 转换为“届数”后找连续整数序列
    奥运会每4年一届,你可以把年份转换成“届数”(比如(year - 1896)/4,不过其实只要能把连续夺冠的年份转换成连续整数就行)。之后找这个届数序列里最长的连续整数子序列长度,这里可以用rle()函数(游程编码)来统计连续符合条件的次数,最后加1就是连续夺冠的次数。

  • 用窗口函数标记连续项
    利用lag()窗口函数获取每个运动员的上一次夺冠年份,然后判断当前年份是否等于上一年份+4,生成一个“是否连续”的标记列。接着用cumsum()对这个标记列进行累积——当标记为不连续时,累积值会增加,这样就能把连续的夺冠记录分到同一组里。最后统计每组的行数,取最大值就是最长连续次数。

这些思路里用到的函数都是tidyverse套件里的常用工具,你可以先从第一个思路入手,逐步拆解实现~

内容的提问来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:15:42