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

如何在R中筛选指定人员2014年前最后一次完成马拉松的记录

获取A和C在2014年前最后一次成功完成马拉松的记录

以下是两种适配大数据集场景的高效解决方案,分别基于dplyr和data.table(后者在处理超大数据集时性能更优):

方法1:使用dplyr(语法直观,适合常规场景)

library(dplyr)

# 替换为你的实际数据集名称和列名
result <- marathon_data %>%
  # 过滤目标人员、成功完成、2014年前的记录
  filter(name %in% c("A", "C"), 
         completion_status == "成功", 
         year < 2014) %>%
  # 按人员分组,保留每组中年份最大的记录
  group_by(name) %>%
  filter(year == max(year)) %>%
  ungroup()

方法2:使用data.table(性能优先,适配大数据集)

library(data.table)

# 将数据集转换为data.table格式(若原本已是则可跳过)
setDT(marathon_data)

# 过滤条件+分组取最后一次记录
result <- marathon_data[name %in% c("A", "C") & completion_status == "成功" & year < 2014, 
                        .SD[year == max(year)], 
                        by = name]

注意事项

  • 请根据实际数据集替换marathon_data、name、completion_status等字段名,确保状态值(如"成功")与数据中的实际值一致。
  • 若存在同一人员同年份多条成功记录,两种方法都会保留所有同年记录,若需仅保留一条,可在分组后添加slice(1)(dplyr)或.SD[1](data.table)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:40:57