2

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

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

1 回答 1

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

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

于 2013-04-23T15:32:48.590 回答