【问题标题】:Split a dataframe into any number of smaller dataframes with no more than N number of rows将数据帧拆分为任意数量的较小数据帧,行数不超过 N
【发布时间】:2016-03-16 17:22:23
【问题描述】:

我有许多数据框,每个数据框都有不同的行数。例如,我想将它们全部分解为每个不超过 50 行的较小数据框。

所以,如果我有一个 107 行的数据框,我想输出以下内容:

包含第 1-50 行的数据框
包含第 51-100 行的数据框
包含第 101-107 行的数据框

我已经阅读了许多使用 split() 函数的示例,但我无法找到 split() 的任何用法或任何其他未预先定义要拆分的数据帧数量的解决方案,或者打乱数据的顺序,或引入其他问题。

这似乎是一个如此简单的任务,以至于我很惊讶我无法找到解决方案。

【问题讨论】:

  • split(df,(seq_len(nrow(df))-1) %/% 50)
  • 谢谢,这似乎有效。您是否介意将其作为问题的答案,也许可以稍微解释一下它的工作原理? split() 中的第二个参数有点混乱。
  • 按要求完成,即使我怀疑您的问题是骗人的。

标签: r


【解决方案1】:

试试:

split(df,(seq_len(nrow(df))-1) %/% 50)

前 50 行有什么共同点?如果您将行的索引(减一)除以 50 的整数除法(%/%),它们都会给出 0 作为结果。您可以猜到,第 51-100 行给出 1,依此类推。 (seq_len(nrow(df))-1) %/% 50 基本上表示你要分到哪个组。

【讨论】:

  • 再次感谢。 “前 50 行有什么共同点?”;这是我在 StackOverflow 上使用 split() 找到的所有其他示例的问题 - 他们都假设行有一些共同点并尝试基于此进行拆分。我的没有任何共同点,因此这个函数的无数其他例子都不起作用。
猜你喜欢
  • 1970-01-01
  • 2020-10-06
  • 2021-10-10
  • 2021-11-08
  • 2013-11-16
相关资源
最近更新 更多