У меня есть данные о госпитализации, в которых записана дата поступления и количество дней, проведенных в больнице:
ID date ndays
1 2005-06-01 15
2 2005-06-15 60
3 2005-12-25 20
4 2005-01-01 400
4 2006-06-04 15
Я хотел бы создать набор данных о днях, проведенных в больнице в год, и поэтому мне нужно иметь дело с такими случаями, как ID 3, чье пребывание в больнице длится в конце года, и ID 4, чье пребывание в больнице составляет более одного года. Существует также проблема, что у некоторых людей есть запись на следующий год, и я хотел бы добавить «лишние» дни к тем, когда это происходит.
До сих пор я придумал это решение:
library(lubridate)
ndays_new <- ifelse((as.Date(paste(year(data$date),"12-31",sep="-")),
format="%Y-%m-%d") - data$date) < data$ndays,
(as.Date(paste(year(data$date),"12-31",sep="-")),
format="%Y-%m-%d") - data$date) ,
data$ndays)
Тем не менее, я не могу придумать способ получить эти «лишние» дни, которые проходят в конце года, и присвоить их новой записи, начиная со следующего года. Может ли кто-нибудь указать мне хорошее решение? Я использую dplyr, поэтому решения с этим пакетом будут особенно приветствоваться, но я готов попробовать любой другой инструмент, если это необходимо.