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

R语言如何基于数据框上一行的值过滤保留符合条件的行

你要的筛选逻辑可以通过获取上一行的取值做条件判断实现,两种常用实现方式如下:

方法1:tidyverse 方案(代码可读性高)

借助dplyr包的lag()函数直接获取上一行的取值做筛选:

# 加载dplyr包,没安装的话先运行 install.packages("dplyr")
library(dplyr)

df1 <- df %>%
  filter(
    lag(Name) == "test",  # 上一行Name等于test
    Name != "value"       # 当前行Name不等于value
  )

运行后得到的df1包含2行,对应Name取值为a和b,和预期结果一致。

方法2:基础R 方案(无需安装额外包)

通过索引偏移实现上一行取值的匹配:

# 构造逻辑索引:第一行无前置行直接排除,后续行匹配两个条件
cond <- c(FALSE, df$Name[-nrow(df)] == "test" & df$Name[-1] != "value")
df1 <- df[cond, ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:06:05