我正試圖學習Julia語言,所以我試圖移植一些MATLAB和Octave代碼來幫助我學習。Julia:找到兩個向量和它們的索引的交集,以幫助連接兩個時間序列
特別是在這個例子中,我正在尋找一種方法來確定索引的原因是因爲我試圖水平連接兩個時間序列的日期,所以我可以測試協整,我已經使用相交函數作爲MATLAB/Ocatve中的中間步驟之一,以允許我在過去實現這一點。
Time series 1 example
+------------+--------+
| Date | Value |
+------------+--------+
| 2014-03-01 | 11 |
| 2014-03-02 | 12 |
| 2014-03-03 | 13 |
| 2014-03-04 | 14 |
| 2014-03-05 | 15 |
+------------+--------+
Time series 2 example
+------------+--------+
| Date | Value |
+------------+--------+
| 2014-03-01 | 21 |
| 2014-03-02 | 22 |
| 2014-03-05 | 25 |
| 2014-03-06 | 26 |
+------------+--------+
Intermediate result desired
+------------+----------------------+---------------------+
| Date | Time series 1 value | Time series 2 value |
+------------+----------------------+---------------------+
| 2014-03-01 | 11 | 21 |
| 2014-03-02 | 12 | 22 |
| 2014-03-03 | 13 | NaN |
| 2014-03-04 | 14 | NaN |
| 2014-03-05 | 15 | 25 |
| 2014-03-06 | NaN | 26 |
+------------+----------------------+---------------------+
Final result desired
+------------+----------------------+---------------------+
| Date | Time series 1 value | Time series 2 value |
+------------+----------------------+---------------------+
| 2014-03-01 | 11 | 21 |
| 2014-03-02 | 12 | 22 |
| 2014-03-05 | 15 | 25 |
+------------+----------------------+---------------------+
MATLAB的和八度音的交叉函數可以返回相交集合元素的索引位置,以及交叉點集合,像這樣(MATLAB reference:Octave reference):
[C a_idx b_idx] = intersect(a_vector, b_vector)
雖然Julia的交叉函數將只有從上面返回C
的等效我可以告訴(Julia reference)
C = intersect(a_vector, b_vector)
如何在Julia中實現兩個時間序列的串聯,只有那些包含數據的日期纔會包含在最終結果中?
我已經玩了findin()
,我可以得到一些指標,但也許我過去編寫MATLAB/Ocatave代碼的方式不能/不應該在Julia中複製,所以我很感興趣以最佳方式使用Julia以最準確和最有效的方式獲得最終時間序列結果。
(時間序列當然給出的例子只是爲了澄清我想實現,可以對數據進行數百萬數十億在第一維)