Для набора панельных данных (GSOEP) мне нужно создать счетчик времени, который дает мне дельту t после события, которое имеет фиктивный код 1 для этого конкретного года для каждого человека. Например. есть наблюдения для отдельного человека в течение случайного диапазона лет, например 1990-2006, с отдельной переменной, указывающей 1 для определенного события в году, например. 1996. Счетчик должен начинаться в следующем году, заканчиваться следующим человеком (id) и должен быть равен нулю до того, как произойдет событие для этого человека.
На данный момент данные выглядят так:
df <- data.frame(id= rep(c("1","2","3"), each=6), year=rep(1998:2003, times=3), event=c(0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0), stringsAsFactors=FALSE)
id year event
1 1 1998 0
2 1 1999 0
3 1 2000 1
4 1 2001 0
5 1 2002 0
6 1 2003 0
7 2 1998 0
8 2 1999 0
9 2 2000 0
10 2 2001 0
11 2 2002 1
12 2 2003 0
13 3 1998 0
14 3 1999 1
15 3 2000 0
16 3 2001 0
17 3 2002 0
18 3 2003 0
Что нужно, так это:
df <- data.frame(id= rep(c("1","2","3"), each=6), year=rep(1998:2003, times=3), event=c(0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0),delta=c(0,0,0,1,2,3,0,0,0,0,0,1,0,0,1,2,3,4), stringsAsFactors=FALSE)
id year event delta
1 1 1998 0 0
2 1 1999 0 0
3 1 2000 1 0
4 1 2001 0 1
5 1 2002 0 2
6 1 2003 0 3
7 2 1998 0 0
8 2 1999 0 0
9 2 2000 0 0
10 2 2001 0 0
11 2 2002 1 0
12 2 2003 0 1
13 3 1998 0 0
14 3 1999 1 0
15 3 2000 0 1
16 3 2001 0 2
17 3 2002 0 3
18 3 2003 0 4
Как я могу этого добиться? Ближайшее, что я получил, было здесь: Создать последовательный счетчик, который перезапускается по условию в группах данных панели
Но я не знаю, как изменить его, чтобы он запускался только после того, как событие произошло один раз, и ставил нули перед событием. Также есть некоторые индивидуумы, для которых нет событий, где счетчик должен выдавать нули. Количество лет (наблюдений) для каждого человека разное, поэтому некоторые идентификаторы варьируются от 1984-1999 годов, а другие - от 1995-2015.
Вы очень помогли бы мне, и я хочу заранее поблагодарить вас за ваше время и усилия.
С уважением,
Юлий