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
相关产品推荐
相关产品推荐

