数据表输出看起来与 xts 输出非常不同

问题描述 投票:0回答:1

我在查看表格格式的数据表时遇到问题。如果我使用 PCRA 包并将数据集导出为 xts 对象(请参阅下面的最小示例),则 xts 对象类似于表格:

class(stocksDat)
[1] "xts" "zoo"
> head(stocksDat[, 1:3])
                   AAN         ABM         ABT
1993-01-31  0.28947368 -0.11250000 -0.08971193
1993-02-28 -0.04081633  0.14893617 -0.05000000
1993-03-31 -0.08510638  0.01234568 -0.01435407
1993-04-30 -0.04651163  0.03658536  0.08912621
1993-05-31  0.08829268 -0.08875740 -0.02690583
1993-06-30 -0.01123596 -0.10389610 -0.05529954

但是如果我将其导出为 data.table(最小示例的第二部分),我会得到 3 列输出:

> class(stocksDat2)
[1] "data.table" "data.frame"
> stocksDat2
       TickerLast       Date      Return
    1:        AAN 1993-01-31  0.28947368
    2:        ABM 1993-01-31 -0.11250000
    3:        ABT 1993-01-31 -0.08971193
    4:       ADBE 1993-01-31  0.31999999
    5:        ADI 1993-01-31  0.01538462
   ---                                  
81140:        WGO 2015-12-31 -0.11555557
81141:        WHR 2015-12-31 -0.09629589
81142:        WMT 2015-12-31  0.05013595
81143:        WTS 2015-12-31 -0.10520627
81144:        XOM 2015-12-31 -0.04543236

我应该怎么做才能让 data.table 像 xts 对象一样打印,其中包含一列日期,后面跟着每个代码的返回列?将 data.table 转换为数据。框架没有帮助。 PCRA 输出格式是否错误?

提前致以诚挚的谢意

托马斯·飞利浦

最小示例: 从 CRAN 安装 PCRA 包

library(PCRA)
library(xts)

stockItems <- c("Date","TickerLast","Return")
# No need to specify begin and end dates if you want all

# Get the data as an xts object (the default)
stocksDat  <- selectCRSPandSPGMI("monthly",
          stockItems   = stockItems,
          factorItems  = NULL,
          subsetType   = NULL,
          subsetValues = NULL,
          outputType   = "xts")

names(stocksDat)
dim(stocksDat)
head(stocksDat[,1:3])
range(index(stocksDat)) # To see begin and end dates

# Now for a data.table output
stocksDat2  <- selectCRSPandSPGMI("monthly",
                        stockItems   = stockItems,
                        factorItems  = NULL,
                        subsetType   = NULL,
                        subsetValues = NULL,
                        outputType   = "data.table")
names(stocksDat2)
class(stocksDat2)
dim(stocksDat2)
head(stocksDat2)
r data.table xts
1个回答
0
投票

要重塑您的

data.table
,它应该像以下一样简单:

stocksDat2[, tapply(Return, TickerLast, list), Date]

读作:

  • 作者:
    Date
    • 全部带走
      Return
    • TickerLast
    • 进行分组
    • 并返回
      list

list
j
槽中的
data.table
元素成为新列时,每个
TickerLast
正好得到一列。

© www.soinside.com 2019 - 2024. All rights reserved.