![](/img/trans.png)
[英]Reshape2: dcast() returning - ‘sum’ not meaningful for factors
[英]Reshape2 dcast() function returning wrong values
我在当天的道琼斯工业平均指数中有股票的报价数据。 这是数据示例:
> 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
我知道我弄错了公式或其他东西,但是无论我要尝试什么,我都会得到相同的结果。 提前致谢。
我想澄清您的帖子中的几个问题:(评论时间太长,所以到目前为止,这充其量只是个猜测。)
data.table
,但未显示版本。 data.table
提供了melt
和dcast
有效实现。 在版本<= 1.9.4中,您可能要使用dcast.data.table
。 从1.9.5+
版本1.9.5+
,您可以直接使用dcast()
而不加载reshape2
。 所以我不知道,如果你使用dcast
从reshape2
或的开发人员版本data.table
。 我相信您还没有显示dcast
的全部结果。 如果它抱怨某事
缺少汇总函数,默认为“长度”
那么公式中的id和measure var不会唯一地标识单元格。 在提供最少信息的情况下,我只能猜测这确实是您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.