2017-02-08 4 views
0

Я пытался рассчитать квартал за четверть изменения в акциях без везения. У меня есть таблица данных с примерно 15миллионными рядами. Что мне нужно рассчитать - это изменение абсолютных значений ежеквартально в соответствии с Держателем и их собственностью.
Моя таблица данных выглядит следующим образом:Квартал за квартал в r

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 

После этого, мне нужно вычислить дисперсию этого результата, опять-таки, Держателем и инвентарем. Существует ли какая-либо общая функция для вычисления статистики, группируя несколько столбцов? Я попробовал агрегат, но принимает yearsssss ...

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

Если вы читали data.table виньетки, вы увидите простой быстрый синтаксис делать агрегирование, как 'DT [., Сумма (х), по = (у, г)] 'где x, y и z - столбцы. – Frank

+1

Привет, Франк, спасибо! Я читал виньетки. Теперь я знаю больше о таблицах данных! – ph33

ответ

0

С dplyr, предполагая df это вам данные. рамка:

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

Спасибо! что решило мою проблему. – ph33

Смежные вопросы