如何在有序R数据框中获取含指定文本的行及其下一行?
在R中提取特定文本行及紧随的下一行
当然可以实现,下面给你两种常用的解决方案,直接用示例数据演示:
首先构造你提供的示例数据框:
df <- data.frame(A = c("TEXT", "ABC", "CCC", "TEXT", "AAA", "GGG"))
方法一:基础R实现
不需要额外安装包,用原生代码就能搞定:
- 先定位所有包含"TEXT"的行索引
match_rows <- which(df$A == "TEXT")
- 合并目标行索引和它们的下一行索引,同时过滤掉超出数据框范围的索引(避免最后一行是目标文本时出错)
keep_rows <- unique(c(match_rows, match_rows + 1)) keep_rows <- keep_rows[keep_rows <= nrow(df)]
- 提取指定行
result <- df[keep_rows, ]
方法二:dplyr(tidyverse)实现
如果你习惯用tidyverse系列工具,这种写法更简洁:
library(dplyr) result <- df %>% # 标记需要保留的行:当前行是TEXT,或者前一行是TEXT mutate(keep_flag = A == "TEXT" | lag(A) == "TEXT") %>% # 过滤出标记为保留的行 filter(keep_flag) %>% # 移除辅助列 select(-keep_flag)
两种方法最终得到的结果都是:
A 1 TEXT 2 ABC 4 TEXT 5 AAA
内容的提问来源于stack exchange,提问作者threxx
相关产品推荐
相关产品推荐

