将数据帧拆分为N个子集,列数相等

时间:2019-04-01 21:25:08

标签: r

如何将具有250列的数据框划分为5个子集,每个子​​集分别具有50列?

我已经尝试过了

df2 <- split(df, sample(1:5, ncol(df), replace=T))

但这只会基于行数进行拆分,而不会基于列数进行拆分

And I want something like this
ncol(df2_1) = 50
ncol(df2_2) = 50
ncol(df2_3) = 50
ncol(df2_4) = 50
ncol(df2_5) = 50

这些应该包括独立的列。

1 个答案:

答案 0 :(得分:0)

使用@markus的注释来使用split.default,我们可以修改初始代码,并更改采样,以便每个子集恰好得到50,

制作一些伪数据,

df <- data.frame(matrix(1:250, ncol = 250))

然后进行拆分,(由于@markus指出,我们采用this的方式进行拆分,这是一个更安全/更可靠的版本)

df2 <- lapply(split.data.frame(t(df), sample(rep(1:5, ncol(df)/5))), t)

一个较不健壮但更简单的选项是:

df2 <- split.default(df, sample(rep(1:5, ncol(df)/5)))

给我们

> ncol(df2$`1`)
[1] 50
> ncol(df2$`2`)
[1] 50
> ncol(df2$`3`)
[1] 50
> ncol(df2$`4`)
[1] 50
> ncol(df2$`5`)
[1] 50