找到R之间的天数

时间:2016-11-08 22:36:50

标签: r date

我有一个包含以下内容的数据框

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

等......(它有更多行)。 我正在尝试编写R代码来实现填充#of days列,如下所示:

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)

但我得到输出的垃圾值。它给了我30,000多天的输出。 但是,如果我为了测试目的而在两个值之间运行difftime,那么我正好得到#天。 你们其中一个人可以看看,让我知道我错过了什么吗? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试:

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

请注意,在2014-10-30和2014-11-10之间有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")