R/polyconti_data.R

Defines functions polyconti_data

Documented in polyconti_data

#' 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)

}
INESSS-QC/polymed1 documentation built on Aug. 4, 2020, 12:02 a.m.