首页 > 解决方案 > 将数据框拆分为具有相同列数的 N 个子集

问题描述

如何将具有 250 列的数据框划分为 5 个子集,每个子​​集 50 列,并将它们分配给 5 个不同的变量?

我试过这个

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

这些应该包括独立的列。

标签: r

解决方案


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

制作一些虚拟数据,

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

然后拆分,(我们之所以这样拆分,@ markus 指出,这是一个更安全/更强大的版本)

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

推荐阅读