将xy数据集转换为数组

问题描述:

我有一个时间/值的数据集,例如将xy数据集转换为数组

> df <- data.frame(time=c(1,4,5,6), speed=c(100, 500, 600, 800)) 

我想将它与一个项转换为数组每个时间刻度:

> some_func(df, speed ~ time, step=1) 
[1] 100 100 100 500 600 800 

通知,加入时间== 2和3中的值。

然后我可以在互相关函数中使用它。

+0

不相同的值,但线性近似将由返回'约(DF $时间,DF $速度,N = 6)'填充在用于次2和3 – lmo

这将返回您想要的值。

df$speed[rep(seq_len(nrow(df)), c(diff(df$time), 1))] 
[1] 100 100 100 500 600 800 

这里,我们使用rep用向量参数一起的第二个参数返回所需的矢量指数df$speed。我们通过diff来实现这一点,它将计算时间段间隔并在末尾附加1以返回最终值。

+0

由于线性内插。它可以开发来做我所需要的。 A.O。处理十进制时间和二次分辨率。 –

一种可能的方法是使用stepfunction插入,就像你在上面的例子中想要的那样。

sf<-stepfun(df$time,c(df$speed[1],df$speed)) 
sf(1:6) 
+0

不幸的是,这不适用于ccf函数,这就是我需要的。有没有办法将其转换为矢量? –

+1

评估对象sf(1:6)是一个数字向量。 ccf(sf(1:6),sf(2:7))因此起作用。 – alex2006

+0

谢谢。这就是诀窍。 –