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

如何优雅筛选数据框指定行:第2行及9、14等间隔5行

提取数据框特定行的优雅方案

问题描述

需要从数据框中提取两类行:

  • 第2行(后续将用作列名)
  • 第9、14、19、24……这类间隔5行的行

当前使用以下代码时,虽然能提取出9、14等行,但会遗漏第2行,还错误提取了不需要的第4行:

Parsed_Data_Frame <- Source_Data_Frame %>% filter(row_number() %%5 == 4)

数据集背景:数据源是读取为数据框的文本文件,前6行为可变的表头内容,分割线后是实际数据,总数据量约1000行,示例数据集如下:

Header1
Header2
Header3
Header4
Header5
Header6
-----------------------------------
41628
60060
41028
41465
-----------------------------------
41629
60145
41003
41471
-----------------------------------
41700
60083
41076
41534
-----------------------------------
41699
60264
41076
41533

解决方案

方法1:使用dplyr的filter精准匹配

直接通过逻辑条件同时指定第2行和目标间隔行,避免错误包含第4行:

library(dplyr)

Parsed_Data_Frame <- Source_Data_Frame %>% 
  filter(row_number() == 2 | (row_number() >= 9 & row_number() %% 5 == 4))

逻辑说明:

  • row_number() == 2 精准保留第2行
  • row_number() >= 9 & row_number() %%5 ==4 仅保留行号≥9且满足每5行间隔的目标行,自动排除了第4行这类不符合的行

方法2:预先生成目标行号(更直观)

如果后续需要调整行号规则,这种方法更易维护:

# 生成目标行号向量:第2行 + 从9开始、步长为5的序列(直到数据框最后一行)
target_rows <- c(2, seq(from = 9, to = nrow(Source_Data_Frame), by = 5))

# 直接按行号提取
Parsed_Data_Frame <- Source_Data_Frame[target_rows, ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:45:09