#' Structure poly continue
#'
#' Structure le dataset d'analyse pour les statistiques descriptives.
#'
#' @param data_Rx Dataset des Rx créé par la fonction `struct_Rx_analyse()`.
#' @param data_cohorte Dataset de la cohorte créé par la fonction `struct_cohorte()`.
#' @param t1,t2 Date de début et de fin du premier interval de temps à analyser.
#' @param t3,t4 Date de début et de fin du deuxième interval de temps à analyser.
#'
#' @import data.table
#' @importFrom lubridate is.Date as_date
#' @export
polyconti_data <- function(data_Rx,
data_cohorte=NULL,
t1, t2=NULL,
t3, t4=NULL){
x <- copy(data_Rx[, .(ID, Rx, DateServ, FinServAjust)]); rm(data_Rx) # sélection des colonnes
if(is.null(data_cohorte)){ # s'il n'y a pas de cohorte
y <- unique(x[, .(ID)]) # devient celle de data_Rx
} else { # sinon
y <- copy(data_cohorte) # sélection de la cohorte d'étude
rm(data_cohorte)
}
if(!is.Date(t1)) t1 <- as_date(t1) # convertir en DATE
if(is.null(t2)) t2 <- t1 else if(!is.Date(t2)) t2 <- as_date(t2)
if(!is.Date(t3)) t3 <- as_date(t3) # convertir en DATE
if(is.null(t4)) t4 <- t3 else if(!is.Date(t4)) t4 <- as_date(t4)
if(t2 >= t3) stop(paste0("t2 (",t2,") ne peut être plus grand ou égal à t3 (",t3,")"))
x <- x[ # conserver les observations qui sont dans l'interval d'analyse
DateServ <= t4 & FinServAjust >= t1
]
setkey(x, ID, Rx, DateServ) # tri
x[, `:=` (t1t2 = 0, # S'il n'y a pas de consommation
t3t4 = 0)]
x[DateServ<=t2 & FinServAjust>=t1, t1t2 := 1] # s'il y a une consommation dans l'interval
x[DateServ<=t4 & FinServAjust>=t3, t3t4 := 1]
x <- x[x[, .I[any(t1t2==1) & any(t3t4==1)], .(ID, Rx)]$V1] # conserver les obs qui ont au moins 1 à t1t2 et à t3t4
x <- x[, .(Rx = unique(Rx)), .(ID)] # liste des Rx
x <- x[, .(nRx = .N), .(ID)] # nbr de Rx par ID
if(nrow(y[!ID %in% x$ID, .(ID, nRx = 0)])) x <- rbind(x, y[!ID %in% x$ID, .(ID, nRx = 0)]) # ajouter ceux sans consommation
setkey(x, ID)
return(x)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.