2013-08-21 135 views
0

我使用getSymbols從雅虎股票導入數據R.合併R中根據日期

當我將它存儲在一個數據幀,它在下面的格式。

  IDEA.BO.Open IDEA.BO.High IDEA.BO.Low IDEA.BO.Close IDEA.BO.Volume 
2007-03-09  92.40  94.25  84.00   85.55  63599400 
2007-03-12  85.55  89.95  85.55   87.40  12490900 
2007-03-13  88.50  91.25  86.20   89.85  16785000 
2007-03-14  87.05  90.85  86.60   87.75  7763800 
2007-03-15  90.00  94.00  88.80   91.45  14808200 
2007-03-16  92.40  93.65  91.25   92.40  6365600 

現在日期列沒有名字。

我想根據日期導入2個股票數據併合並收盤價格(任意一組隨機行之間)。問題是,日期列未被識別。

我想我的最終結果是這樣的。

  IDEA.BO.Close  BHARTIARTL.BO.Close 
2007-03-12  123     333 
2007-03-13  456     645 
2007-03-14  789     999 

我試過如下:

> c <- merge(Cl(IDEA.BO),Cl(BHARTIARTL.BO)) 
> c['2013-08/'] 
      IDEA.BO.Close BHARTIARTL.BO.Close 

2013-08-06   NA    323.40 
2013-08-07   NA    326.80 
2013-08-08  157.90    337.40 
2013-08-09  157.90    337.40 

上的Excel相同的數據是這樣的:

8/6/2013 156.75 8/6/2013 323.4 
8/7/2013 153.1 8/7/2013 326.8 
8/8/2013 157.9 8/8/2013 337.4 
8/9/2013 157.9 8/9/2013 337.4 

我不明白,在R中的NA值背後的原因和方式來獲得沒有NA值的合併數據。

+1

-1,不顯示你嘗試過什麼。爲什麼你要轉換成data.frame?將它們保留爲xts對象,然後調用'merge(Cl(IDEA.BO),Cl(BHARTIARTL.BO))'。有一些例子說明如何在整個地方做到這一點。 –

+0

好吧,這是我做的。 D3 < - as.data.frame(IDEA.BO) GLD < - 動物園(D3 [1],as.Date(D3 [1,7])) 我發現了該錯誤消息: 在'[.data.frame'誤差(D3,...,7):選擇的未定義的列 此外:警告消息: 在動物園(D3 [1,7],as.Date(D3 [1])): 一些如果'order.by'中的索引條目不是唯一的,則「動物園」對象的方法不起作用 我想這是因爲IDEA.BO存儲在d3中被轉換爲只有6列。 我的想法是,日期列將是第一列,調整後的價格列將是第七列。 – user2127116

+0

所以你轉換到data.frame,所以你可以創建一個動物園對象?當你可以調用'as.zoo(IDEA.BO)'時,這是非常低效的。你不應該假設數據打印是如何存儲數據的。 'ncol(IDEA.BO)'會爲你節省很多麻煩。 –

回答

1

您需要做更多有關xtszoo數據結構的閱讀。它們是指數有序的矩陣。當您轉換爲data.frames時,它們將成爲具有'rownames'屬性的列表,其顯示爲print.data.frame而不包含標題。列表元素根據矩陣列的命名命名。 (我明白約書亞的這個問題,可見煩惱,因爲他張貼瞭如何使用XTS的對象很多SO例子。)