r - data.table 中的横截面子集

标签 r data.table

我有一个包含多个列的 data.table,如下所示:

DT <- data.table(date = as.IDate(rep(c("2012-10-17", "2012-10-18", "2012-10-19"), each=10)), 
                   session = c(1,2,3), price = c(10, 11, 12,13,14), 
                   volume = runif(30, min=10, max=1000)) 

我想提取一个多列表,该表显示特定类型 session 中每个价格的交易量 - 每列代表一个日期。

目前,我使用以下方法一次提取一个日期的数据:

DT[session==1,][date=="2012-10-17", sum(volume), by=price]

然后绑定(bind)列。

是否有一种方法可以获取最终产品(每列都引用特定日期的表格),而无需将所有单个查询粘在一起 - 正如我目前正在做的那样?

谢谢

最佳答案

以下内容是否符合您的要求。

reshape2 和 data.table 的组合

library(reshape2)

.DT <- DT[,sum(volume),by = list(price,date,session)][, DATE := as.character(date)]
# reshape2 for casting to wide -- it doesn't seem to like IDate columns, hence
# the character DATE co
dcast(.DT, session + price ~ DATE, value.var = 'V1')

    session price 2012-10-17 2012-10-18 2012-10-19
1        1    10   308.9528   592.7259         NA
2        1    11   649.7541         NA   816.3317
3        1    12         NA   502.2700   766.3128
4        1    13   424.8113   163.7651         NA
5        1    14   682.5043         NA   147.1439
6        2    10         NA   755.2650   998.7646
7        2    11   251.3691   695.0153         NA
8        2    12   791.6882         NA   275.4777
9        2    13         NA   111.7700   240.3329
10       2    14   230.6461   817.9438         NA
11       3    10   902.9220         NA   870.3641
12       3    11         NA   719.8441   963.1768
13       3    12   361.8612   563.9518         NA
14       3    13   393.6963         NA   718.7878
15       3    14         NA   871.4986   582.6158

如果您只想要 session 1

dcast(.DT[session == 1L], session + price ~ DATE)

   session price 2012-10-17 2012-10-18 2012-10-19
1        1    10   308.9528   592.7259         NA
2        1    11   649.7541         NA   816.3317
3        1    12         NA   502.2700   766.3128
4        1    13   424.8113   163.7651         NA
5        1    14   682.5043         NA   147.1439

关于r - data.table 中的横截面子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261240/

相关文章:

r - 在 rmarkdown 中绘制神经网络

多边形中的 r 个点

r - 使用分位数箱的 ID 的 data.table 中的新列值

R Data.Table 多重赋值 IfElse

r - all.equal 的 "invalid argument type"错误。电阻

r - 在 R 中使用 ARIMAX 进行预测

在 data.table 中按组进行回归和汇总统计

R data.table 分配单行列表类型列

r - 删除那些没有指定年份值的行组