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

如何在R中根据数据框指定列的指定字符提取对应下一行数据

需求说明

我们需要提取数据框中Procedure列取值为p2的每一行对应的下一行数据,所用示例数据框构造代码如下:

df <- data.frame(
  Sub = c(1:15),
  var = c(400,300,346,432,203,480,760,274,284,592,248,714,384,394,528),
  Procedure = c("p1","p2","p1","p1","p2","p1","p1","p1","p2","p1","p1","p2","p1","p1","p1")
)

实现方法

方法1:基础R实现

思路是先定位所有Procedure等于p2的行索引,将索引+1后提取对应行即可,逻辑直观无需额外依赖:

# 定位p2所在的行索引
p2_index <- which(df$Procedure == "p2")
# 提取对应下一行数据,自动过滤超出数据框行数的无效索引
result <- df[p2_index + 1, ]

方法2:dplyr包实现

借助dplyr的lag函数(取当前行的上一列值)直接筛选,代码更简洁易读:

library(dplyr)
result <- df %>% 
  filter(lag(Procedure) == "p2")

两种方法运行后得到的结果一致:

SubvarProcedure
3346p1
6480p1
10592p1
13384p1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:06:05