如何将data.frame拆分为预定行数的较小data.frames?

时间:2015-12-12 18:03:44

标签: r split dataframe

我有以下数据框:

 df <- data.frame(a=rep(1:3),b=rep(1:3),c=rep(4:6),d=rep(4:6))
    df
      a b c d
    1 1 1 4 4
    2 2 2 5 5
    3 3 3 6 6

我想要一个矢量N来确定我的窗口大小,因此我将设置

N <- 1

我想将此数据帧拆分为N行的相等部分,并将3个结果数据帧存储到列表中。

我有以下代码:

groupMaker <- function(x, y) 0:(x-1) %/% y

testlist2 <- split(df, groupMaker(nrow(df), N))

问题是此代码通过在前面添加X0.来重命名我的列名称

result <- as.data.frame(testlist2[1])

result
    X0.a X0.b X0.c X0.d
1    1    1    4    4
> 

我想要一个完全相同的代码但保留列名称的代码。请记住,我的原始数据有超过3行,所以我需要一些适用于更大的数据帧的东西。

1 个答案:

答案 0 :(得分:2)

要提取list元素,我们可以使用[[。此外,由于每个list元素均为data.frame,因此我们无需再次明确调用as.data.frame

testlist2[[1]]

我们也可以使用gl创建分组变量。

split(df, as.numeric(gl(nrow(df), N, nrow(df))))