我需要将一大组值与一小组进行比较,并找出两者之间的最小差异。也许这是“移动窗口”比较?我查看了几个时间序列包,但无法找到(或识别)比较不同大小的数据集的函数。下面的文字示例。非常感谢任何帮助。
----------1st comparison-----------
Time S1 S2 Diff Mean Diff
1 1.3 1.2 0.1
2 1.7 1.6 0.1 0.10
3 1.2
4 1.6
----------2nd comparison------------
1 1.3
2 1.7 1.2 0.5
3 1.2 1.6 -0.4 0.05
4 1.6
----------3rd comparison------------
1 1.3
2 1.7
3 1.2 1.2 0.0
4 1.6 1.6 0.0 0.00 <- minimum difference
答案 0 :(得分:1)
这样的事情:
require(zoo)
S1 <- c(1.3,1.7,1.2,1.6)
S2 <- c(1.2,1.6)
我们可以使用rollapply来应用沿向量滚动的函数。宽度设置为较小比较向量的大小。然后我们使用匿名函数将我们的大向量S1中的值作为变量x
传递,然后从中减去小向量中的值并取平均值。然后我们可以使用min
返回最小值:
> min( rollapply( S1 , width = 2 , function(x) mean(x-S2) ) )
[1] 0
如果没有数据结构,很难使其更具普遍性