2017-02-08 7 views
0

나는 운이없는 지분 변동분을 쿼터 단위로 계산하려고 노력해 왔습니다. 나는 약 15millions 행의 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 

내가

df[, qoq := c(NA, diff(Shares)), by = "Holder,stock,Quarter"] 

그러나, 나는 단지 NA를 얻을 사용 data.table 기능을 사용하기 위해 노력하고있어.

나는 이런 식으로 뭔가를 기다리고 있었다 : 그 후

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 

을, 나는 홀더 및 주식에 의해, 다시,이 결과의 분산을 계산해야합니다. 여러 열을 그룹화하여 통계를 계산하는 일반적인 기능이 있습니까? 나는 df 당신에게 데이터입니다 가정 집계 시도했지만 dplyr으로

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

, 당신이 'DT 같이 집계를 수행하기위한 간단한 고속 구문 보자 [. =하여, 합 (X) (Y, Z)] 'x, y 및 z는 열입니다. – Frank

+1

안녕하세요, Frank! 감사합니다. 나는 비 네트를 읽었다. 이제 데이터 테이블에 대해 더 많이 알고 있습니다! – ph33

답변

0

... yearsssss하고있다. 프레임 :는 data.table 네트 읽으면

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

감사! 내 문제를 해결했다. – ph33