【问题标题】:Select every nth row from dataframe从数据框中选择每第 n 行
【发布时间】:2026-01-31 04:45:01
【问题描述】:

我有一个数据表,想从中提取每第五行来创建一个新表。有没有实现这个的命令?

这是我的数据示例:

count   Idf_Nr  block
1   1233    B12
2   1233    B12
3   1446    B12
4   1446    B12
5   365 B12
6   365 B12
7   876 B12
8   876 B12
9   842 B12
10  842 B12
11  1092    B12
12  1092    B12
13  923 B12
14  923 B12
15  1266    B12
16  1266    B12
17  256 B12
18  256 B12
19  588 B12
20  588 B12
21  1074    B12
22  1074    B12
23  474 B12
24  474 B12
25  1421    B12

【问题讨论】:

标签: r dataframe


【解决方案1】:

对于一个数据框 df,你可以得到 df.new 为:

df.new = df[seq(1, nrow(df), 5), ]

这会每 5 行创建一个从第 1 行到第 nrow(表的行数)的索引。您可以使用起点和 5 来提取其他序列。

【讨论】:

    【解决方案2】:

    此任务的一个dplyr 可能性可能是:

    df %>%
     slice(which(row_number() %% 5 == 1))
    
      count Idf_Nr block
    1     1   1233   B12
    2     6    365   B12
    3    11   1092   B12
    4    16   1266   B12
    5    21   1074   B12
    

    或者:

    df %>%
     filter(row_number() %% 5 == 1)
    

    【讨论】:

    • 我真的很喜欢这个解决方案的创造性和直观性,并使用dplyr
    【解决方案3】:

    如果要提取 5,10...

    newdf <- df[c(rep(FALSE,4),TRUE), ]
    

    如果是 1、6、11,

    newdf <- df[c(TRUE,rep(FALSE,4)), ]
    

    【讨论】:

      【解决方案4】:

      df

      df 是你的数据框。

      【讨论】: