2015-06-25 106 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并得到相同的结果。谢谢。 –