繁体   English   中英

从数据框中选择每第 n 行

[英]Select every nth row from dataframe

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

这是我的数据示例:

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

对于数据框 df,您可以获得 df.new 为:

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

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

此任务的一种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)

如果要提取 5,10...

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

如果是 1,6,11,

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

df<-df[c(seq(0,25,5)),]

其中 df 是您的数据框。

另一种选择可能是像这样组合sliceseq

library(dplyr)
slice(df, seq(1, nrow(df), 5))
#>   count Idf_Nr block
#> 1     1   1233   B12
#> 2     6    365   B12
#> 3    11   1092   B12
#> 4    16   1266   B12
#> 5    21   1074   B12

reprex 包于 2022-07-10 创建 (v2.0.1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM