2
親愛なるすべて:私はイベント間変数を作成しようとしていました。実際、以前は、hereに助けを求めました。しかし、私はそれが私の目的を完全に果たしていないことを発見しました。イベント変数への時間をRに作成
以下は自分のデータと変数を作成する変数です。
df2 = structure(list(Country = c("USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA"), year = 2000:2012,
Event = c(0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L,
0L), `**Time-to-event**` = c(0L, 1L, 2L, 0L, 1L, 2L, 3L,
0L, 1L, 0L, 1L, 2L, 3L)), .Names = c("Country", "year", "Event",
"**Time-to-event**"), row.names = c(NA, -13L), class = "data.frame")
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
私はそれがうまく働いたが、このコードの問題は、それがどこのイベント例を数えることであるタイム・トゥ・イベントvaraible
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)
を作成するために、次のコードを使用することが示唆されました= 1何年も続く。例えば以下を参照してください:
Country year Event **Time-to-event**
USA 2000 0 0
USA 2001 0 1
USA 2002 1 2
USA 2003 0 0
USA 2004 1 **1**
USA 2005 1 **2**
USA 2006 1 **3**
USA 2007 0 0
USA 2008 1 1
代わりに、私はむしろ明確にするために1の を数えるよりも、次の年のイベント変数が1である場合のために(0)ゼロの値を与えるためにそれをしたいと思い、これは私が "イベントへの時間"変数を見たいと思う方法です。
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 1 2
USA 2006 1 0
USA 2007 1 0
USA 2008 1 0
USA 2009 0 0
USA 2010 0 1
こんにちは@ Floo0と私にこれを共有してくれてありがとう。私はこれを試してみました。**未使用の引数(by = rleid(cumsum(Event) - Event))**。 "tte"はどういう意味ですか? – FKG
'cumsum(shift(Event、fill = 1L))'は 'by ='に入れることができる別のものです。 – Frank
@FKGまず、そのエラーがなくなるために 'setDT(df2)'が必要です。 'tte'は単に" time to event "を省略しています。 – Frank