r的季度比例

时间:2017-02-08 03:52:55

标签: r data.table grouping aggregate-functions summary

我一直在努力计算股票的季度变化,没有运气。我有一个大约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)

1 个答案:

答案 0 :(得分:0)

使用dplyr,假设df是您的数据。框架

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