【问题标题】:Reshape2 dcast() function returning wrong valuesReshape2 dcast() 函数返回错误值
【发布时间】:2015-06-25 14:04:44
【问题描述】:

我有一天中道琼斯工业平均指数股票的报价数据。以下是数据示例:

> 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

我知道我弄错了公式或其他什么,但无论我尝试什么,我都会得到相同的结果。提前致谢。

【问题讨论】:

  • dcast还有其他消息吗?
  • 是的,"Aggregate function missing, defaulting to 'length'' 谢谢

标签: r pivot reshape reshape2


【解决方案1】:

你的帖子有几个问题,我想澄清一下:(评论太长了,所以现在最多只是猜测。)

  • 没有可重现的例子。
  • 您使用data.table,但未显示版本。 data.table 提供了meltdcast 的有效实现。在版本 dcast.data.table。从1.9.5+ 版本开始,您可以直接使用dcast(),而无需加载reshape2。所以我不确定你是使用来自reshape2dcast 还是来自data.table 的开发版本。
  • 您的公式(如果不是拼写错误)与您显示的结果不符。

我相信你还没有展示来自dcast 的全部结果。如果它抱怨什么

聚合函数缺失,默认为 'length'

那么公式中的 id 和 measure 变量不会唯一标识单元格。根据提供的最少信息,我只能猜测这确实是您的问题。

【讨论】:

  • 我编辑了帖子以修复我之前的错字,以便结果代表TS〜Sym的实际输入。我缺少聚合函数,默认为“长度”消息。我在没有重新加载 reshape2 的情况下尝试了 dcast() 并得到了相同的结果。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 2022-11-02
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
相关资源
最近更新 更多