Я готовлю набор данных для соответствия модели набора условных рисков с помощью стратифицированной регрессии Кокса. И мне было интересно, есть ли способ создать нужные мне переменные без выполнения длительных циклов.
По сути, мой фрейм данных выглядит так: он показывает, когда и когда в данной стране (ID
) произошло какое-либо событие в течение определенного периода времени:
year ID event time
1991 UK 0 1
1992 UK 0 2
1993 UK 0 3
1994 UK 0 4
1995 UK 0 5
1996 UK 0 6
1997 UK 0 7
1998 UK 0 8
1991 FR 0 1
1992 FR 1 2
1993 FR 1 3
1994 FR 0 4
1995 FR 0 5
1996 FR 1 6
1997 FR 0 7
1998 FR 0 8
1991 IT 1 1
1992 IT 0 2
1993 IT 0 3
1994 IT 0 4
1995 IT 0 5
1996 IT 1 6
1997 IT 0 7
1998 IT 0 8
Мне нужно создать еще две переменные: переменную условного времени, похожую на time
, но «сбрасывающую часы» каждый раз, когда происходит событие; и переменная последовательность, которая указывает, в какой последовательности или стадии находится страна, т. е. будет ли следующее событие вторым, третьим, четвертым ... (число должно увеличиваться после em> событие). Таким образом, данные будут выглядеть так:
year ID event time cond.time sequence
1991 UK 0 1 1 1
1992 UK 0 2 2 1
1993 UK 0 3 3 1
1994 UK 0 4 4 1
1995 UK 0 5 5 1
1996 UK 0 6 6 1
1997 UK 0 7 7 1
1998 UK 0 8 8 1
1991 FR 0 1 1 1
1992 FR 1 2 2 1
1993 FR 1 3 1 2
1994 FR 0 4 1 3
1995 FR 0 5 2 3
1996 FR 1 6 3 3
1997 FR 0 7 1 4
1998 FR 0 8 2 4
1991 IT 1 1 1 1
1992 IT 0 2 1 2
1993 IT 0 3 2 2
1994 IT 0 4 3 2
1995 IT 0 5 4 2
1996 IT 1 6 5 2
1997 IT 0 7 1 3
1998 IT 0 8 2 3
Кто-нибудь знает, как это можно сделать эффективным способом? Я пытался сделать это с помощью функции ddply
, но не понял, как это сделать.