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

R语言按首尾条件过滤行:保留首次到末次指定因子间的行

R数据框按Run列区间过滤实现方案

核心思路:先定位Run列第一个取值为Running的行号、最后一个取值为Running的行号,直接截取两个行号之间的所有行即可。

方法1:tidyverse(dplyr)实现(代码可读性高)

library(dplyr)
# 定位首个Running的行位置
first_running <- which(data$Run == "Running")[1]
# 定位最后一个Running的行位置
last_running <- tail(which(data$Run == "Running"), 1)
# 切片取区间行
filtered_data <- data %>% 
  slice(first_running:last_running)

方法2:基础R实现(无需加载第三方包)

first_running <- which(data$Run == "Running")[1]
last_running <- tail(which(data$Run == "Running"), 1)
filtered_data <- data[first_running:last_running, ]

异常兼容补充

如果存在Run列没有Running值的场景,可以增加判断逻辑避免报错:

if (any(data$Run == "Running")) {
  first_running <- which(data$Run == "Running")[1]
  last_running <- tail(which(data$Run == "Running"), 1)
  filtered_data <- data[first_running:last_running, ]
} else {
  # 无Running值时可自定义返回逻辑,例如下方返回空数据框
  filtered_data <- data[0, ]
}

以上代码运行后得到的filtered_data即为符合要求的结果,和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:15:03