首页 > 解决方案 > 将数据框拆分为 5 部分并将多余的行放在最后

问题描述

例如,我有一个这样的数据框:

df <- data.frame(x = 1:104, y = runif(104))

我想把它分成 5 个部分,最后额外的 4 行放在df列表的最后一部分。

我已经尝试过这些代码,但它们要么将最后 4 行放入前 4 部分,z要么将它们放入列表的第一部分。

z <- split(df, rep(1:5, length.out = nrow(df), each = ceiling(nrow(df)/5)))
z <- split(df, rep(1:5, length.out = nrow(df), each = floor(nrow(df)/5)))

我想要的是df分成 5 个部分,如果行数df不能被 5 整除,我想把这些额外的行放在最后一部分z

感谢并感谢您的回复。

标签: rdplyr

解决方案


你可以这样做:

p <- 5
n <- nrow(df)
split(df, cummax(as.numeric(gl(p, n%/%p, n))))

推荐阅读