我在查看表格格式的数据表时遇到问题。如果我使用 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)
要重塑您的
data.table
,它应该像以下一样简单:
stocksDat2[, tapply(Return, TickerLast, list), Date]
读作:
Date
Return
TickerLast
list
当
list
的 j
槽中的 data.table
元素成为新列时,每个 TickerLast
正好得到一列。