2017-12-18 15 views
1

이것은 사소한 일일 수 있지만 특별한 경우가있어서 커뮤니티와 검증 할 생각입니다.R의 윈도우 기능 : 디버깅 cumsum

나는 다음과 같은 치수 $의 PID를 데이터 프레임을 가지고 : NUM 그룹 $ : CHR $ 상태 :

df <- tibble::tribble(
    ~pid, ~group,~status, 
    12, "g1", 1, 
    12, "g2", 0, 
    18, "g3", 1, 
    18, "g1", 1, 
    18, "g2", 1 
) 

지금 윈도우 함수에서 작업하는 동안 나는 cumsum을 적용해야 CHR () 'PID'임 있도록 다음과 같은 코드를 사용하여 각 그룹을 통해

 r2 <- df%>% 
      group_by(pid)%>% 
      mutate(col = cumsum(status)) 

그리고 R2는

01,232,706,561 될 것으로 기대하고 있습니다

하지만 제 r2 결과는 그렇지 않습니다. 는 PID 컬럼을 통해 '창'을 생성하지 않는 것처럼 나에게 보였다 반대로

pid group status col 
    12 g1  1   1 
    12 g2  0   1 
    18 g3  1   2 
    18 g1  1   3 
    18 g2  1   4 

에. 나는 문자로 PID를 변환했지만 여전히 같은 결과를 시도했다.

만약 cumsum에 대한 나의 이해가 정확하다면, 그러한 행동에 대한 가능한 이유는 무엇입니까? 패키지에 관한 한 당으로

, 나는 dplyr, plyr은 sqldf는 data.table, lubridate는

+0

'status'는'문자'또는'숫자'벡터입니까? 수치 여야하지만 질문의 성격 인 것 같습니다. –

+0

내 상태가 ... 상태가 int입니다. 질문에 관련이없는 다른 열도 데이터에 포함되어 있습니다. – hbabbar

+0

isn'group_by' 공간을 사용할 수 없지만 다른 결과는 올바른 결과를 제공합니다. 데이터의 '출력'을 게시 할 수 있습니다. 그 안에 무언가가있을 수 있습니다. – alistaire

답변

0

내가 일반적으로 아래의 코드로 data.table 사용 내 작업 공간에로드 한 : dplyr 코드 같은 생각하면 쓴,하지만 작동합니다.

df[, col := cumsum(status), pid] 
+0

이 작업은 가능하지만 dplyr 메소드가 작동하지 않는 이유에 대해 더 우려했습니다. 이제 주문이 올바르게되었습니다. – hbabbar