将xy数据集转换为数组

时间:2017-07-06 11:43:58

标签: r

我有一个时间/值的数据集,例如

> 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的值。

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

2 个答案:

答案 0 :(得分:2)

一种可能的方法是使用stepfunction进行插值,如上例所示。

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

答案 1 :(得分:1)

这将返回您想要的值。

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

在这里,我们使用rep以及第二个参数的vector参数来返回df$speed所需向量的索引。我们使用diff实现此目的,它将计算时间间隔,并在末尾追加1以返回最终值。