大家好:我想在R中创建一个“事件时间”变量,需要你们的专业知识来完成。下面是我的数据的一个小样本。时间变量是以年为单位,从0开始,当事件(Event)等于1时会重置。
在实际数据中,观察期从1989年开始,但有些国家(在1989年前尚未批准某些公约)会晚些加入进来,比如下面的例子中的美国。不管何时开始,“事件时间”变量的第一个值都应该是零。
感谢所有建议!
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
回答:
我们可以使用 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