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

如何在R语言中基于上一行值筛选并删除指定条件的行?

按条件筛选并删除数据行的R语言实现

删除条件

需同时满足以下所有条件时,才删除对应行:

  • 当前行的travel字段值>100
  • 上一行的travel字段值>100
  • 当前行的angle字段值绝对值>150

示例数据集

points <- c(1:18)
travel <- c(1, 5, 200, 400, 15, 30, 400, 402, 8, 17, 52, 41, 600, 580, 5, 12, 180, 0)
angle <- c(0, -30, 55, 3, -160, 108, -172, -180, -5, 42, -86, 160, -3, 164, 16, -30, 84, 0)

path <- data.frame(points, travel, angle)

解决方案1:使用dplyr包

library(dplyr)

# 筛选保留不满足删除条件的行
path_filtered <- path %>%
  filter(!(travel > 100 & lag(travel) > 100 & abs(angle) > 150))

# 查看筛选后的数据
print(path_filtered)

逻辑说明:lag(travel)用于获取当前行的上一行travel值,通过!取反删除条件,保留符合要求的行。运行后会自动删除示例中的第8行和第14行。

解决方案2:基础R实现

# 生成删除条件的逻辑向量
delete_flag <- with(path, travel > 100 & c(FALSE, travel[-length(travel)] > 100) & abs(angle) > 150)

# 筛选数据
path_filtered <- path[!delete_flag, ]

# 查看筛选后的数据
print(path_filtered)

逻辑说明:用c(FALSE, travel[-length(travel)])构造上一行的travel值序列(第一行无前置行,补FALSE),生成删除标记后取反筛选,同样能删除目标行。

内容的提问来源于stack exchange,提问作者blake.struthers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:26:17