R - 移动窗口与不等大小的数据集进行比较

时间:2013-04-23 15:16:49

标签: r math comparison dataframe zoo

我需要将一大组值与一小组进行比较,并找出两者之间的最小差异。也许这是“移动窗口”比较?我查看了几个时间序列包,但无法找到(或识别)比较不同大小的数据集的函数。下面的文字示例。非常感谢任何帮助。

    ----------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 

1 个答案:

答案 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

如果没有数据结构,很难使其更具普遍性