R 从事件指示器变量计算到事件的时间
我想计算一个事件的相对时间。我有以下MWE:R 从事件指示器变量计算到事件的时间,r,data.table,R,Data.table,我想计算一个事件的相对时间。我有以下MWE: library(data.table) dt.MWE <- structure(list(Year = 2000:2015, Event = c(0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
library(data.table)
dt.MWE <- structure(list(Year = 2000:2015, Event = c(0L, 0L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L,
0L)), row.names = c(NA, -16L)
, class = c("data.table", "data.frame")
, index = structure(integer(0), "`__Year`" = integer(0)))
Year Event
1: 2000 0
2: 2001 0
3: 2002 0
4: 2003 0
5: 2004 1
6: 2005 0
7: 2006 0
8: 2007 0
9: 2008 0
10: 2009 0
11: 2010 1
12: 2011 0
13: 2012 0
14: 2013 0
15: 2014 0
16: 2015 0
另一种选择:
dt.MWE[, Time.to.Event := (1:.N) - c(0,.N)[sum(Event) + 1]
, by = cumsum(shift(Event, fill = 0))][]
其中:
另一种选择:
dt.MWE[, Time.to.Event := (1:.N) - c(0,.N)[sum(Event) + 1]
, by = cumsum(shift(Event, fill = 0))][]
其中:
我喜欢用
cumsum(Event)-Event
构造组var的聪明方法。我通常用两个rev
。从joran这里得到了这个提示:)另一个选项:dt.MWE[,Time.to.Event:=(1.N)-c(0.N)[sum(Event)+1],by=cumsum(shift(Event,fill=0)]
这个问题是否有更好的标题,更一般?也许“从事件指示器变量计算到事件的时间”?我喜欢用cumsum(Event)-Event
构建集团var的聪明方法。我通常用两个rev
。从joran这里得到了这个提示:)另一个选项:dt.MWE[,Time.to.Event:=(1.N)-c(0.N)[sum(Event)+1],by=cumsum(shift(Event,fill=0)]
这个问题是否有更好的标题,更一般?也许“从事件指示器变量计算到事件的时间”有人说我不能超过一次。有人说我不能超过一次。
dt.MWE[, Time.to.Event := (1:.N) - c(0,.N)[sum(Event) + 1]
, by = cumsum(shift(Event, fill = 0))][]
> dt.MWE
Year Event Time.to.Event
1: 2000 0 -4
2: 2001 0 -3
3: 2002 0 -2
4: 2003 0 -1
5: 2004 1 0
6: 2005 0 -5
7: 2006 0 -4
8: 2007 0 -3
9: 2008 0 -2
10: 2009 0 -1
11: 2010 1 0
12: 2011 0 1
13: 2012 0 2
14: 2013 0 3
15: 2014 0 4
16: 2015 0 5