是否有一个函数将大数据帧拆分为n个相同大小的较小数据帧(按行)并且具有较小尺寸的n + 1数据帧?

时间:2015-06-14 18:18:17

标签: r split

标题几乎说明了这一点。我有一个数据框,有7百万行,对我来说太大了,我可以在没有机器崩溃的情况下进行分析。我想将其拆分为100个具有70,000行的较小数据帧,并使第101个数据帧具有剩余行(< 70,000)。这似乎是非平凡的。

我知道我可以手动计算n+1数据框的大小,删除它,然后按以下方式使用split函数:

d <- split(my_data_frame,rep(1:100,each=70,000))

但我有多个大型数据框,所有这些计算都很繁琐。有替代解决方案吗?

1 个答案:

答案 0 :(得分:5)

这样的事情怎么样:

df <- data.frame(x = 1:723500, y = runif(7235000))
split(df, rep(1:100, each = round(NROW(df) / 100, -4)))

或者抽象一些:

num_dfs <- 100
split(df, rep(1:num_dfs, each = round(NROW(df) / num_dfs, -4)))

您可能需要考虑caret包中的内容,例如:caret::createFolds(df$x)