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

如何在R中标记is_seq_end为yes后的首个Pass/Take on类型行

需求:标记足球赛事序列起始行

需要在足球赛事事件的DataFrame中,找到并标记所有is_seq_end字段值为"yes"的事件之后,首次出现的类型为"Pass"或"Take on"的行,新增字段is_seq_start,符合条件的标记为"yes",其余为"no"。

原始数据

数据表格

idtypeis_seq_end
1Dispossessedyes
2Defensiveno
3Otherno
4Defensiveno
5Passno
6Passno
7Dispossessedyes
8Defensiveno
9Otherno
10Take onno

R数据结构

df <- structure(list(id = 1:10, type = c("Dispossessed", "Defensive", 
"Other", "Defensive", "Pass", "Pass", "Dispossessed", "Defensive", 
"Other", "Take on"), is_seq_end = c("yes", "no", "no", "no", 
"no", "no", "yes", "no", "no", "no")), class = "data.frame", row.names = c(NA, 
-10L))

解决方案(R语言)

使用dplyr包实现分组筛选,定位每个is_seq_end="yes"之后的首个目标行:

library(dplyr)

df <- df %>%
  # 按is_seq_end="yes"划分分组
  mutate(seq_group = cumsum(is_seq_end == "yes")) %>%
  group_by(seq_group) %>%
  # 标记组内第一个符合type条件的行
  mutate(is_seq_start = case_when(
    row_number() == which(type %in% c("Pass", "Take on"))[1] ~ "yes",
    TRUE ~ "no"
  )) %>%
  ungroup() %>%
  select(-seq_group)

# 处理无符合条件行的分组(示例中无此情况)
df$is_seq_start[is.na(df$is_seq_start)] <- "no"

最终结果

idtypeis_seq_endis_seq_start
1Dispossessedyesno
2Defensivenono
3Othernono
4Defensivenono
5Passnoyes
6Passnono
7Dispossessedyesno
8Defensivenono
9Othernono
10Take onnoyes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:06:20