如何在列之间划分数据帧,例如在第n列?

时间:2018-07-26 19:57:39

标签: r dataframe split

假设我正在使用以下数据框:

Mydata <- data.frame(X1 = c(1,2,3,4,5,6,7,8,9,10),X2 = c(1,3,1,1,1,5,1,1,8,1),
                     X3 = c(1,2,3,4,5,6,7,8,9,10),X4 = c(1,3,1,1,1,5,1,1,8,1),
                     X5 = c(1,2,3,4,5,6,7,8,9,10),X6 = c(1,3,1,1,1,5,1,1,8,1),
                     X7 = c(1,2,3,4,5,6,7,8,9,10),X8 = c(1,3,1,1,1,5,1,1,8,1),
                     X9 = c(1,2,3,4,5,6,7,8,9,10),X10 = c(1,3,1,1,1,5,1,1,8,1),
                     X11 = c(1,2,3,4,5,6,7,8,9,10),X12 = c(1,3,1,1,1,5,1,1,8,1))

我想将此数据帧分为三个单独的数据帧,一个数据帧中的列X1〜X4,第二个数据帧中的X5〜X8,以及X9〜X12。我将如何编码以继续此模式以用于任意数量的列?

1 个答案:

答案 0 :(得分:4)

每4列拆分Mydata。我们可以显式使用split.default

split.default(Mydata, rep(1:3, each = 4))

The "default" method can split a data frame by columns。只需根据需要设置分组变量即可。


对于平衡分组,gl很方便(请参阅?gl)。我们可以使用gl(3, 4)代替上面的rep(1:3, 4),这样可以避免类型从“整数”转换为“ factor”。

通常,将gl(ncol(Mydata) / n, n)用于“每n列”(n必须除以ncol(Mydata))。