如何在R中基于关键词条件提取数据集指定行及对应前一行
R实现提取匹配行及上一行的方案
适配dplyr语法的实现
你原有代码中使用的filter_all(any_vars())属于dplyr废弃的旧语法,推荐替换为if_any()写法,同时新增标记上一行的逻辑即可实现需求:
library(dplyr) df.out <- df %>% # 标记所有包含"Aplicada"的行 mutate(target_flag = if_any(everything(), ~ . %in% "Aplicada")) %>% # 筛选匹配行 + 匹配行的上一行 filter(target_flag | lag(target_flag)) %>% # 移除辅助标记列 select(-target_flag)
无依赖的基础R实现
如果不想加载第三方包,可以直接通过行索引定位:
# 定位包含"Aplicada"的所有行号 match_idx <- which(apply(df, 1, function(row) "Aplicada" %in% row)) # 合并匹配行号和上一行行号,去重排序后提取数据 df.out <- df[sort(unique(c(match_idx - 1, match_idx))), ]
两种方法输出的结果都和你给出的预期结构完全一致。
内容的提问来源于stack exchange,提问作者Andres Mora
相关产品推荐
相关产品推荐

