2016-11-08 1 views
0

에서 나는 (그것이 더 많은 행이) .... 다음과 같은 내용찾는 일 R

Date  Comments failure #ofdays 
2014-10-25 abc  0 
2014-10-30 def  1 
2014-11-10 ghi  0 
2014-11-15 lmo  0 

등으로 데이터 프레임을 가지고있다. 나는 다음과 같이 #of 일 열을 채우는 달성하기 위해 R 코드를 작성하는 것을 시도하고있다 : 오류가있을 경우 그렇지 않은 경우

Date  Comments failure #ofdays 
2014-10-25 abc  0   0 
2014-10-30 def  1   0 
2014-11-10 ghi  0   10 
2014-11-15 lmo  0   15 

그래서, 본질적으로, 일의 # 0으로 재설정해야, 그것은을 보유해야 마지막 실패 이후의 누적 일수. 나는

no.of.days<-ifelse(failure==1,0, difftime((Date),lag(Date,1,default=0))+lag(no.of.days,1) 

을 시도하지만 출력을 위해 쓰레기 값을 얻는다. 그것은 출력으로 3 만 일 이상을 제공합니다. 그러나 테스트 목적으로 두 값 사이에서 difftime을 실행하면 제대로 된 일 수를 얻게됩니다. 여러분 중 한 명이 한 번씩 내가 무엇을 놓치고 있는지 알려 줄 수 있습니까? 미리 감사드립니다.

답변

2

당신이 시도 할 수 :

ave(as.numeric(df$Date),cumsum(df$failure!=0),FUN=function(x) x-x[1]) 
#[1] 0 0 11 16 

는 (문제의 표시로이 아니라 10) 2014년 10월 30일 사이 2014년 11월 10일 십일일가 있음을 유의하시기 바랍니다.

데이터

df<-structure(list(Date = structure(c(16368, 16373, 16384, 16389), class = "Date"), 
    Comments = c("abc", "def", "ghi", "lmo"), failure = c(0L, 
    1L, 0L, 0L)), .Names = c("Date", "Comments", "failure"), row.names = c(NA, 
-4L), class = "data.frame") 
관련 문제