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

如何用R语言dplyr包的filter函数筛选获胜队伍玩家信息

解决方案

假设你的原数据框名为game_data,包含列:season(赛季编号)、team_color(玩家所属队伍颜色)、player_name(玩家姓名)、death_time(死亡时间,未死亡玩家为NA);你的获胜队伍数据框Winners包含列:season、winning_color(该赛季获胜队伍的颜色)。

步骤1:关联原数据与获胜队伍信息

通过赛季字段将两个数据框关联,确保每个玩家都能匹配到所在赛季的获胜队伍颜色:

library(dplyr)

joined_data <- game_data %>%
  inner_join(Winners, by = "season")

步骤2:筛选获胜队伍的所有玩家

筛选出玩家所属队伍颜色与对应赛季获胜颜色一致的记录,保留所有获胜队伍成员(无论是否提前死亡):

winning_players <- joined_data %>%
  filter(team_color == winning_color)

步骤3:处理死亡时间并排序

将未死亡玩家的death_time替换为"N/A",再按赛季分组,每组内按死亡时间排序(已死亡玩家按时间先后排列,未死亡玩家排在最后):

final_table <- winning_players %>%
  mutate(death_time = if_else(is.na(death_time), "N/A", as.character(death_time))) %>%
  group_by(season) %>%
  arrange(death_time, .by_group = TRUE) %>%
  ungroup() %>%
  select(season, player_name, death_time) # 保留需要的核心列

关键说明

  • inner_join确保仅保留存在对应获胜记录的赛季数据,避免赛季与获胜队伍颜色不匹配的问题。
  • filter(team_color == winning_color)实现了赛季与获胜队伍颜色的精准匹配,不会出现跨赛季颜色混淆。
  • 分组排序逻辑保证每个赛季内的玩家单独排序,未死亡玩家因转为字符串"N/A",默认会排在数字/时间格式的死亡时间之后,符合需求。

如果你的death_time是时间格式(如POSIXct),转换为字符串时可使用format(death_time, "%Y-%m-%d %H:%M")指定显示格式,避免默认格式混乱。

内容的提问来源于stack exchange,提问作者Logan W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:30:48