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

如何用dplyr根据条件选取R中的下一行数据?

解决方案

可以用dplyr中的lag()函数结合filter()实现需求,核心思路是筛选出“上一行的var1满足>=5”的行,具体代码如下:

library(dplyr)

df1 <- data.frame(ID = c(1, 2, 3, 4, 5),
                  var1 = c(10, 1, 10, 4, 1),
                  var2 = c('a', 'b', 'c', 'd', 'e'))

# 筛选目标行
result <- df1 %>%
  filter(lag(var1) >= 5)

print(result)

运行后输出结果正好符合预期:

ID var1 var2
1  2    1    b
2  4    4    d

补充说明

你之前用case_when的思路存在偏差:case_when是用于条件赋值(给列按规则填充值),而非筛选行;另外select_是已被弃用的函数,现代dplyr中直接用select()即可,但此场景根本不需要选列操作,核心是筛选行。

如果需要更直观地查看标记过程,可以先新增一列标记上一行是否满足条件,再筛选:

df1 %>%
  mutate(prev_var1_meet = lag(var1) >= 5) %>%
  filter(prev_var1_meet) %>%
  select(-prev_var1_meet) # 移除临时标记列

内容的提问来源于stack exchange,提问作者Meg.abytes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:45:39