如何根据在数据帧上重复的固定行数来制作较小的子集

How to make smaller subsets based upon a fixed number of rows repeating over the dataframe

我的问题:

我有一个包含 86016000 行观察值的数据框:

  1. 每小时有 512000 次观察
  2. 有7天的24小时数据
  3. 所以24*7*512000 = 86016000
  4. 有 40 列(变量)
  5. 没有日期或日期时间戳的列
  6. 只有行号足以确定有多少obs。每一天,并且没有记录此数据的错误。

鉴于如此大的数据集,我想做的是创建 12288000(即 24 * 512000)行的子集,这样我们每天就有 7 个子集。

我试过的:

d <- split(PltB_Fold3_1_Data, rep(1:12288000, each=7))

但不幸的是,差不多半个小时后,我终止了这个过程,因为没有结果。

有没有比上述更好的解决方案?

您可能正在寻找 seq 而不是 rep。使用 seq,您可以生成从 0 到 86016000 递增 12288000 的数字序列。

为了节省资源,您可以使用此序列生成临时数据帧,然后对每个数据帧做任何您想做的事。

sequence <- seq(from = 0, to = 86016000, by = 12288000)

for(i in 1:(length(sequence)-1)){
    temp <- df[sequence[i]+1:sequence[i+1], ]
    # do something here with your temporary data frame
}