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

R语言:如何删除满足Condition列关联下一行条件的数据行?

筛选R数据框:删除满足特定条件的行

需求说明

需要删除数据框中符合以下条件的行:若某行的下一行Condition列值等于该行Condition列值加10,则删除该行。示例中需删除第1、3、6、9行。

示例数据

data_long <- data.frame(
  File = rep("CBM00101.EDF", 10),
  Condition = c(1,11,3,13,2,3,13,1,2,12)
)

解决方案

方法1:使用dplyr包(高效简洁)

利用lead()函数获取下一行的Condition值,直接筛选出符合保留条件的行:

library(dplyr)

filtered_data <- data_long %>%
  filter(lead(Condition, default = NA) != Condition + 10)
  • lead(Condition, default = NA)将下一行的Condition值映射到当前行,最后一行无后续行,用NA填充
  • 条件判断会自动排除那些下一行Condition等于当前行+10的行,最后一行因NA的比较逻辑会被保留

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

通过向量索引完成筛选:

# 生成保留行的逻辑标记
keep_rows <- c(head(data_long$Condition, -1) + 10 != tail(data_long$Condition, -1), TRUE)
# 筛选数据
filtered_data <- data_long[keep_rows, ]
  • head(data_long$Condition, -1)取除最后一行外的所有Condition值
  • tail(data_long$Condition, -1)取除第一行外的所有Condition值
  • 对比两组值,得到前9行的保留标记,最后一行直接标记为保留(TRUE)
  • 用逻辑向量筛选数据框,得到目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:22:04