2015-06-25 104 views
0

我有一天中道瓊斯工業平均指數的股票價格數據。下面是數據的樣本:Reshape2 dcast()函數返回錯誤的值

> head(df) 
         TS Sym  Ask 
1: 2015-03-24 14:00:00.000 YMM5 17956.00 
2: 2015-03-24 14:00:00.002 AAPL 126.91 
3: 2015-03-24 14:00:00.005 UNH 118.35 
4: 2015-03-24 14:00:00.009 XOM 84.64 
5: 2015-03-24 14:00:00.014 AXP 81.35 
6: 2015-03-24 14:00:00.016 PG 84.19 

我試圖使用reshape2的dcast()函數將數據轉換爲寬幅,所以它看起來像:

     TS AAPL AXP PG UNH XOM 
1: 2015-03-24 14:00:00.000 126.91 81.35 84.19 118.35 84.64 

當我試試下面的命令集,雖然,這裏是我得到:

tick <- data.table(read.csv("2015-3-24.csv")) 
df<- data.table(TS = tick$DateTime, Sym = tick$Symbol, Ask = tick$Ask, Bid = tick$Bid) 
tmp <- dcast(data = df, formula = TS ~ Sym) 

head(tmp) 


         TS AAPL AXP BA CAT CSCO CVX DD DIS GE GS HD IBM INTC JNJ JPM KO MCD MMM MRK MSFT NKE PFE PG TRV UNH UTX V VZ WMT XOM YMM5 
1 2015-03-24 14:00:00.000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
2 2015-03-24 14:00:00.002 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
3 2015-03-24 14:00:00.005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 

我知道我得到的公式錯了或什麼,但不管我有什麼儘管去嘗試,我得到了相同的結果。提前致謝。

+0

'dcast'還有其他消息嗎? – Arun

+0

是的''「聚合函數缺失,默認爲'length'''謝謝 –

回答

0

你的文章的幾個問題,我想獲得澄清:(太長了評論,所以這是一個猜測充其量截至目前)

  • 沒有重複的例子。
  • 您使用data.table,但版本未顯示。 data.table提供了meltdcast的有效實施。在版本< = 1.9.4中,您可能需要使用dcast.data.table。從版本1.9.5+開始,您可以直接使用dcast()而無需加載reshape2。所以我不確定您是否使用reshape2中的dcastdata.table的開發版本。
  • 您的公式(如果不是拼寫錯誤)對於您顯示的結果是錯誤的。

我相信你沒有顯示從dcast的整個結果。如果抱怨一些事情

聚合功能缺失,默認爲「長度」

那麼你的ID和措施瓦爾式不唯一地標識細胞。用最少的信息提供,我只能猜測這確實是你的問題。

+0

我編輯了這篇文章,修復了我之前製作的錯字,以便結果代表TS〜Sym的實際輸入。我得到了Aggregate函數缺失,默認爲「長度」消息。我嘗試dcast()而不重新加載reshape2並得到相同的結果。謝謝。 –