【发布时间】:2017-02-08 03:52:54
【问题描述】:
我一直在尝试计算股票的季度环比变化,但没有成功。我有一个大约 1500 万行的 data.table。
我需要计算的是根据持有人及其拥有的股票逐季度绝对值的变化。
我的数据表如下所示:
stock Holder Quarter Shares
1: GOOGLE Advance Capital Management, Inc. 2015 Q3 5800
2: GOOGLE Advance Capital Management, Inc. 2015 Q4 9000
3: GOOGLE Advance Capital Management, Inc. 2016 Q1 7000
4: GOOGLE Advance Capital Management, Inc. 2016 Q2 7560
5: GOOGLE Advest, Inc. 2015 Q3 12000
6: GOOGLE Advest, Inc. 2015 Q3 13450
我正在尝试使用 data.table 函数,使用
df[, qoq := c(NA, diff(Shares)), by = "Holder,stock,Quarter"]
但是,我只得到 NA。
我期待这样的事情:
stock Holder Quarter Shares qoq
1: GOOGLE Advance Capital Management, Inc. 2015 Q3 5800 NA
2: GOOGLE Advance Capital Management, Inc. 2015 Q4 9000 4000
3: GOOGLE Advance Capital Management, Inc. 2016 Q1 7000 -2000
4: GOOGLE Advance Capital Management, Inc. 2016 Q2 7560 560
5: GOOGLE Advest, Inc. 2015 Q3 12000 NA
6: GOOGLE Advest, Inc. 2015 Q3 13450 1450
之后,我需要再次按 Holder 和 stock 计算这个结果的方差。是否有任何通用函数可以通过对几列进行分组来计算统计数据?我尝试了聚合,但需要几年的时间......
aggregate(REPORTED_HOLDING~Quarter+FILER_NAME+STOCK_NAME, FUN=sum, data=df)
【问题讨论】:
-
如果您阅读 data.table 小插曲,您会看到一种用于进行聚合的简单快速语法,例如
DT[, sum(x), by=.(y,z)]其中 x、y 和 z 是列。 -
嗨弗兰克,谢谢!我读了小插曲。现在我对数据表有了更多的了解!
标签: r data.table grouping aggregate-functions summary