将数据帧拆分为 5 个部分并将额外的行放在末尾

Cey*_*yda 3 r dplyr

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

df <- data.frame(x = 1:104, y = runif(104))
Run Code Online (Sandbox Code Playgroud)

我想把它分成 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)))
Run Code Online (Sandbox Code Playgroud)

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

感谢并感谢您的回复。

Ony*_*mbu 6

你可以这样做:

p <- 5
n <- nrow(df)
split(df, cummax(as.numeric(gl(p, n%/%p, n))))
Run Code Online (Sandbox Code Playgroud)