R中数据帧的等大小子集

时间:2017-03-29 14:20:20

标签: r dataframe subset

我有一个这样的数据框:

     A  B C  D  E
e1   4  3 2  3 13
e2  21 17 5 12 19
e3  13  5 4 12  9
e4  30 18 7  7 30
e5   6 20 1  1 11
e6  16 12 6  8 23
e7  22 16 6  6 22
e8   2 11 1  2 11
e9   5 15 5  0 26
e10 21 19 6  2 22
e11 14 20 6  6 21

并给出一个数字X,如果想要做这个大小为X行的数据帧的子集。例如,il X = 2,我想有e1 + e2,e3 + e4等。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以像这样使用split。然后,您可以访问列表元素,如下所示:df1[[1]]

df1 <- read.table(text="row     A  B C  D  E
e1   4  3 2  3 13
e2  21 17 5 12 19
e3  13  5 4 12  9
e4  30 18 7  7 30
e5   6 20 1  1 11
e6  16 12 6  8 23
e7  22 16 6  6 22
e8   2 11 1  2 11
e9   5 15 5  0 26
e10 21 19 6  2 22
e11 14 20 6  6 21",header=TRUE,stringsAsFactors=FALSE)

n <- 2
split(df1, rep(1:(nrow(df1)/n+nrow(df1)%%n),each=n))
$`1`
  row  A  B C  D  E
1  e1  4  3 2  3 13
2  e2 21 17 5 12 19

$`2`
  row  A  B C  D  E
3  e3 13  5 4 12  9
4  e4 30 18 7  7 30

$`3`
  row  A  B C D  E
5  e5  6 20 1 1 11
6  e6 16 12 6 8 23

$`4`
  row  A  B C D  E
7  e7 22 16 6 6 22
8  e8  2 11 1 2 11

$`5`
   row  A  B C D  E
9   e9  5 15 5 0 26
10 e10 21 19 6 2 22

$`6`
   row  A  B C D  E
11 e11 14 20 6 6 21