我一直在努力计算股票的季度变化,没有运气。我有一个大约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)
答案 0 :(得分:0)
使用dplyr
,假设df
是您的数据。框架:
df %>%
group_by(stock, Holder) %>%
mutate(qoq = Shares - lag(Shares)) %>%
summarise(qvar = var(qoq, na.rm = T))