Tenho um conjunto de dados que descreve o número de dias (BedDays) que cada paciente permanece internado em um hospital:
my_df<-data.frame(RecordID=c("1","2","3","4","5","6","7","8","9","10"),
StartDate=c("2020-03-02","2020-03-05"
,"2020-03-08","2020-03-11"
,"2020-03-14","2020-03-17"
,"2020-03-20","2020-03-23"
,"2020-03-26","2020-03-29"),
BedDays=c(12,3,2,11,1,10,18,10,3,6))
E gostaria de contar o número de leitos usados a cada dia. Eu gostaria que meus resultados fossem:
Até agora, só consigo pensar no uso de arrays e loops. Use o array para listar as datas em que cada paciente ficou no hospital e, em seguida, use o loop para examinar os arrays e contar os pacientes no hospital em um determinado dia. Esta será a contagem de leitos utilizados em um determinado dia. Isso parece complicado.
Existe alguma função/pacote inteligente que possa fazer essa transformação facilmente?
Acho que a chave é "expandir"
BedDays
para uma sequência de dias e depois contar esses dias.O código abaixo começa dividindo os dados por data, depois cria data.frames com tantas linhas quanto
BedDays
, reúne todos os dados temporários e agrega os dados para ter contagens de leitos por data.Criado em 02/01/2024 com reprex v2.0.2
Uma
data.table
opçãoAqui está uma combinação com
uncount
ecount
:saída: