如何根据在数据帧上重复的固定行数来制作较小的子集
How to make smaller subsets based upon a fixed number of rows repeating over the dataframe
我的问题:
我有一个包含 86016000 行观察值的数据框:
- 每小时有
512000
次观察
- 有7天的24小时数据
- 所以
24*7*512000 = 86016000
- 有 40 列(变量)
- 没有日期或日期时间戳的列
- 只有行号足以确定有多少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
}
我的问题:
我有一个包含 86016000 行观察值的数据框:
- 每小时有
512000
次观察 - 有7天的24小时数据
- 所以
24*7*512000 = 86016000
- 有 40 列(变量)
- 没有日期或日期时间戳的列
- 只有行号足以确定有多少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
}