如何在R中删除DataFrame中规律分布的连续行区间?
批量删除R语言DataFrame指定连续行区间的实现方法
先明确待删除行的规律
你需要删除的是每间隔18行出现一次的9行连续区间:从10-18开始,下一组是28-36,直到最后一组442-450。每组起始行的间隔为18,每组包含9行(起始行到起始行+8)。
方法一:基础R实现
先生成所有待删除的行号,再通过负索引完成删除:
# 生成所有待删除区间的起始行 start_rows <- seq(from = 10, to = 442, by = 18) # 将每个起始行扩展为对应的9行区间,合并成完整的待删除行向量 rows_to_remove <- unlist(lapply(start_rows, function(x) x:(x+8))) # 删除指定行,得到清理后的DataFrame df_clean <- df[-rows_to_remove, ]
方法二:用dplyr包实现
如果习惯使用tidyverse工具链,可以结合row_number()和filter()操作:
library(dplyr) # 先生成待删除行号(逻辑和基础R一致) start_rows <- seq(from = 10, to = 442, by = 18) rows_to_remove <- unlist(lapply(start_rows, function(x) x:(x+8))) # 过滤掉指定行 df_clean <- df %>% filter(!(row_number() %in% rows_to_remove))
结果验证
原DataFrame共450行,待删除区间总计25组(每组9行),共删除225行。清理后的df_clean应剩余225行,可通过nrow(df_clean)确认结果是否正确。
内容的提问来源于stack exchange,提问作者Rustam
相关产品推荐
相关产品推荐

