2017-07-06 232 views
0

我有一個時間/值的數據集,例如將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

回答

1

這將返回您想要的值。

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。處理十進制時間和二次分辨率。 –

2

一種可能的方法是使用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

謝謝。這就是訣竅。 –