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

如何基于固定间隔在R语言中筛选行并生成新data.frame?

按固定间隔筛选行生成新的data.frame

没问题,我来帮你搞定这个需求!针对你给出的示例,我们可以用几种简单的方法在R里实现按固定间隔筛选行的操作。

先创建示例数据框

首先我们先把你给出的示例数据转换成R的data.frame,方便后续演示:

df <- data.frame(
  col1 = c("A", "D", "G", "J", "M", "P"),
  col2 = c("B", "E", "H", "K", "N", "Q"),
  col3 = c("C", "F", "I", "L", "O", "R"),
  row.names = 1:6
)

方法一:基础R原生操作

直接通过行索引来筛选是最直观的方式。你需要取第2、4、6行(也就是偶数行),可以用seq()函数生成符合间隔要求的行索引,再提取对应行:

# 生成从2开始,步长为2,到数据框总行数的索引序列
selected_rows <- seq(2, nrow(df), by = 2)
# 提取对应行生成新的data.frame
new_df <- df[selected_rows, ]

运行后new_df就是你想要的结果:

col1 col2 col3
2    D    E    F
4    J    K    L
6    P    Q    R

方法二:用dplyr包(tidyverse风格)

如果你习惯用tidyverse系列工具,dplyr的slice()函数可以更简洁地完成这个操作:

library(dplyr)
new_df <- df %>% 
  slice(seq(2, n(), by = 2))

这里n()会自动获取当前数据框的总行数,省去了手动输入nrow(df)的步骤,代码更简洁。

灵活调整间隔

如果你的实际需求不是每2行取第2行,比如每3行取第3行,只需要修改seq()里的起始值和步长就行:

  • 每3行取第3行:seq(3, nrow(df), by = 3)
  • 从第1行开始每2行取1行:seq(1, nrow(df), by = 2)

内容的提问来源于stack exchange,提问作者Gabriel Lucas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:53:21