亲爱的所有人:我正在考虑在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
答案 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