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

R使用Tidyverse如何选取每组的Start行与最后一个End行?

实现方案

核心逻辑为按Group分组后,同时匹配「State为Start」和「State为End且为分组内最后一个End」两个条件筛选行,适配任意规模数据。

完整运行代码

# 加载tidyverse
library(tidyverse)

# 构造示例数据
df <- tibble(
  Group = c(1,1,1,2,2,2,2),
  State = c("Start", "End", "End", "Start", "End", "End", "End"),
  Serial = 1:7
)

# 核心处理代码
result <- df %>%
  group_by(Group) %>%
  filter(
    State == "Start" | (State == "End" & Serial == max(Serial[State == "End"]))
  ) %>%
  ungroup()

运行后result即为你需要的目标数据框。

特殊场景适配

如果你的数据中Serial列不保证随End状态递增,需要按数据的原始行顺序取最后一个End,可以使用下方不依赖Serial的实现:

result <- df %>%
  group_by(Group) %>%
  mutate(row_order = row_number()) %>%
  filter(
    State == "Start" | (State == "End" & row_order == max(row_order[State == "End"]))
  ) %>%
  select(-row_order) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:18:01