r 中的四分之一

Quarter over Quarter in r

我一直在尝试计算股票的季度环比变化,但没有成功。我有一个 data.table 大约有 1500 万行。 我需要计算的是根据 Holder 和他们拥有的股票每个季度的绝对值变化。
我的数据 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 计算。是否有任何通用函数可以通过对几列进行分组来计算统计信息?我试过聚合,但花了 yearsssss...

aggregate(REPORTED_HOLDING~Quarter+FILER_NAME+STOCK_NAME, FUN=sum, data=df)

使用 dplyr,假设 df 是你的数据。frame:

df %>% 
    group_by(stock, Holder) %>% 
    mutate(qoq = Shares - lag(Shares)) %>% 
    summarise(qvar = var(qoq, na.rm = T))