如何创建Time-to-Event变量?

时间:2016-02-14 16:17:57

标签: r machine-learning

亲爱的所有人:我正在考虑在R中创建一个“time to event”变量,需要你的专家来完成它。您可以在下面看到我的数据的一小部分样本。时间变量以年为单位,从0开始,当事件= 1时自行重置。

在实际数据中,观察期始于1989年,但有些国家(1989年之前尚未批准某些公约)将在稍后出现,如下图所示的美国。每当它启动时,“time to event”变量的第一个值应为零。

感谢所有建议!

Country  year              Event      **Time-to-event**
USA      2000               0            0
USA      2001               0            1
USA      2002               1            2
USA      2003               0            0
USA      2004               0            1
USA      2005               0            2
USA      2006               1            3
USA      2007               0            0
USA      2008               1            1
USA      2009               0            0
USA      2010               0            1
USA      2011               0            2
USA      2012               0            3

2 个答案:

答案 0 :(得分:0)

我们可以使用ave

i1 <- with(df2, ave(Event, Country, FUN= 
         function(x) cumsum(c(TRUE, diff(x)<0))))
df2$Time_to_event <- with(df2, ave(i1, i1, Country, FUN= seq_along)-1)

df2$Time_to_event
#[1] 0 1 2 0 1 2 3 0 1 0 1 2 3

答案 1 :(得分:0)

count_until(x)始终等于rev(count_since(rev(x)))。 一个人可能会使用这样的东西:

count_since<-function(trigger)
{
  i <- seq_along(trigger)
  (i - cummax(i*trigger))*cummax(trigger)
}

count_until<-function(x)rev(count_since(rev(x)))
> count_until(1:10%%5==0)
 [1] 4 3 2 1 0 4 3 2 1 0