Tenho dados que se assemelham aos abaixo e preciso calcular o tempo médio (em meses) entre as datas na coluna Event_date, agrupadas por Subject_ID. Em outras palavras, para cada assunto nos dados, preciso saber o número médio de meses entre os eventos relevantes para esse assunto. Cada assunto tem um número diferente de eventos associados a ele. Existe uma maneira relativamente simples de fazer isso? Sei como fazer isso em R, mas sou relativamente novo em SAS e ainda não consegui descobrir uma solução.
Agradecemos antecipadamente por qualquer ajuda que esta comunidade possa fornecer!
Assunto_ID | Data do evento |
---|---|
1 | Data_1 |
1 | Data_2 |
1 | Data_3 |
2 | Data_1 |
2 | Data_2 |
3 | Data_1 |
3 | Data_2 |
3 | Data_3 |
3 | Data_4 |
3 | Data_5 |
3 | Data_6 |
4 | Data_1 |
4 | Data_2 |
5 | Data_1 |
5 | Data_2 |
5 | Data_3 |
5 | Data_4 |
6 | Data_1 |
6 | Data_2 |
No SAS, você pode aproveitar o processamento por grupo. Sabemos que precisamos comparar cada data com a data anterior, mas não queremos fazer isso para a primeira data do grupo. Para fazer essa tarefa, precisaremos conhecer duas funções:
lag()
: Obtém o valor da linha anteriorintck()
: Conta intervalos de tempo entre duas datas (por exemplo, dias, meses, anos, etc.)Para cada linha, exceto a primeira, queremos executar
itnck('month', lag(date), date)
para contar o número de meses entre os eventos. Mas a função lag é um pouco especial e não se comporta como esperado dentro de uma declaração condicional, então vamos apenas executá-la em cada linha e definir a primeira linha em cada grupo como missing.A partir daí, você pode executar algo como SQL ou PROC MEANS para obter o valor médio entre datas por grupo.