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

如何提取分组变量Sequ每个新实例的紧邻前一行数据?

提取每个Sequ新实例的紧邻前一行数据

原始数据

df <- data.frame(
  IPU_id = 1:9,
  Sequ = c(NA,NA,1,1,2,2,NA,3,3),
  Q = c(NA,NA,"q_wh","q_wh","q_wh","q_wh",NA,"q_pol","q_pol"),
  N_extension = c(NA,NA,0,NA,1,NA,NA,0,NA)
)

需求说明

针对每个非NA的Sequ值,提取其首次出现行的紧邻前一行数据,无论该行的Sequ是否为NA。

解决方案

方法1:使用base R

# 定位每个非NA Sequ的首次出现位置
first_occur <- which(!duplicated(df$Sequ, incomparables = NA) & !is.na(df$Sequ))
# 提取这些位置的前一行
result <- df[first_occur - 1, ]

# 查看结果
result

方法2:使用dplyr包

library(dplyr)

result <- df %>%
  # 标记每个非NA Sequ的首次出现行
  mutate(is_first = !duplicated(Sequ, incomparables = NA)) %>%
  # 筛选出首次出现的行并提取其行号
  filter(is_first & !is.na(Sequ)) %>%
  pull(row_number()) %>%
  # 取对应行号的前一行
  {df[.-1, ]}

# 查看结果
result

运行结果

IPU_id Sequ    Q N_extension
2      2   NA <NA>          NA
4      4    1 q_wh          NA
7      7   NA <NA>          NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:00:09