建立具有重叠的观测的数据帧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建立具有重叠的观测的数据帧相关的知识,希望对你有一定的参考价值。

可以说,我有以下结构的数据帧:

> DF <- data.frame(x=1:5, y=6:10)
> DF
  x  y
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10

我需要建立新的数据帧与从第一数据帧重叠的观测被用作用于构建的矩阵为Rglpk优化库的输入。我会用正长度观察窗,以使得如果n = 2所得到的数据帧将加入1和2行,2和3,3,4,等等。所得到的数据帧的长度将是

(numberOfObservations-windowSize+1)*windowSize

在这个例子中与windowSize = 2其结果将是如下的结构

  x  y
1 1  6
2 2  7
3 2  7
4 3  8
5 3  8
6 4  9
7 4  9
8 5 10

我可以做像一个循环

DFResult <- NULL
numBlocks <- nrow(DF)-windowSize+1
for (i in 1:numBlocks) 
    DFResult <- rbind(DFResult, DF[i:(i+horizon-1), ])

但这似乎合租的效率不高,特别是对于非常大的数据帧。

我也试过

rollapply(data=DF, width=windowSize, FUN=function(x) x, by.column=FALSE, by=1)
     x y
[1,] 1 6
[2,] 2 7
[3,] 2 7
[4,] 3 8

我在那里试图重复的行块不应用任何聚合函数。这不工作,因为我错过了一些行

我有点被这个难住了,并四处寻找类似的问题,但找不到任何。没有人有任何更好的想法?

答案

我们可以做一个量化的方法

i1 <- seq_len(nrow(DF))
res <- DF[c(rbind(i1[-length(i1)], i1[-1])),]
row.names(res) <- NULL   
res
#  x  y
#1 1  6
#2 2  7
#3 2  7
#4 3  8
#5 3  8
#6 4  9
#7 4  9
#8 5 10

以上是关于建立具有重叠的观测的数据帧的主要内容,如果未能解决你的问题,请参考以下文章

如何使用具有超过 2^31 个观测值的 biglm

Paper2020_基于中间观测器的多智能体系统分布式故障估计

无感foc如何切观测器

如何应用滚动平均函数,同时及时保持所有具有重复索引的观测值

面向大规模分析的多源对地观测时空立方体

论自建可观测性的成本与收益