如何将具有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
这些应该包括独立的列。
答案 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