knitr::opts_chunk$set(echo = TRUE,
                      comment = "#>")
library(data.table)
library(lubridate)
library(stringr)
f.as_date <- function(x) paste0(as_date(x))

Structure du dataset

Importation & format des colonnes

DT <- readRDS("V:/GI-Data/_ADMIS/R data/DECES_2020-01-07.rds")  # import
DT[, ID := as.integer(ID)]
setkey(DT)
dt <- DT[seq(1e4)]
dt <- dcast(
  dt,
  ... ~ SOURCE_DERN_SERVICE,
  value.var = "DERNIER_SERVICE",
  fun = toString
)

Exploration des colonnes

SEXE

dt <- unique(DT[, .(ID, SEXE)], by = "ID")
dt <- dt[, .(Freq = .N), keyby = .(SEXE)]
dt[, Total := sum(Freq)]
dt

DDN

Les dates de naissance sot toujours le 15e du mois.

dt <- unique(DT[, .(ID, DDN)], by = "ID")
summary(dt$DDN)

DECES_FIPA

Les dates de décès FIPA sont toujours le 15e du mois.

dt <- unique(DT[, .(ID, DECES_FIPA)], by = "ID")
nrow(dt[!is.na(DECES_FIPA)])  # avec décès
summary(dt$DECES_FIPA)

DECES_HOSPIT_POSTMORTEM

dt <- unique(DT[, .(ID, DECES_HOSPIT_POSTMORTEM)], by = "ID")
nrow(dt[!is.na(DECES_HOSPIT_POSTMORTEM)])  # avec décès
summary(dt$DECES_HOSPIT_POSTMORTEM)

DECES_HOSPIT_AUTRE

dt <- unique(DT[, .(ID, DECES_HOSPIT_AUTRE)], by = "ID")
nrow(dt[!is.na(DECES_HOSPIT_AUTRE)])  # avec décès
summary(dt$DECES_HOSPIT_AUTRE)

DERNIER_SERVICE

dt <- unique(DT[, .(ID, DERNIER_SERVICE)], by = c("ID", "DERNIER_SERVICE"))
nrow(dt[!is.na(DERNIER_SERVICE)])  # avec décès
summary(dt$DERNIER_SERVICE)

Nouvelles variables

Deces

Indique si l'individu possède au moins une date de décès.

DT[, Deces := TRUE]
DT[
  is.na(DECES_FIPA) & is.na(DECES_HOSPIT_AUTRE) & is.na(DECES_HOSPIT_POSTMORTEM),
  Deces := FALSE
]

Age & CatAge

L'âge des individus au 15 janvier 2020.

DT[, Age := as.integer(floor(difftime(as_date("2020-01-15"), DDN, units = "weeks") / 52.1429))]
DT[, CatAge := cut(Age, breaks = seq(0, max(Age)+5, 5), right = FALSE)]

xDeces & xDernService

Indique seulement l'année et le mois des dates de décès puisque la date de FIPA est seulement le 15 du mois. La date du dernier service n'est pas nécessairement le 15, mais on va aussi la comparer pour savoir si elle est dans le même mois.

DT[!is.na(DECES_FIPA), xDeces_FIPA := str_sub(DECES_FIPA, 1, 7)]
DT[!is.na(DECES_HOSPIT_POSTMORTEM), xDeces_Post := str_sub(DECES_HOSPIT_POSTMORTEM, 1, 7)]
DT[!is.na(DECES_HOSPIT_AUTRE), xDeces_Hospit := str_sub(DECES_HOSPIT_AUTRE, 1, 7)]
DT[!is.na(DERNIER_SERVICE), xDernService := str_sub(DERNIER_SERVICE, 1, 7)]

Dates minimum et maximum des décès

Comparer les dates de décès à savoir s'ils sont dans le même mois ou pas.

DT[
  Deces == TRUE,
  `:=` (DateMinDeces = min(xDeces_FIPA, xDeces_Post, xDeces_Hospit, na.rm = T),
        DateMaxDeces = min(xDeces_FIPA, xDeces_Post, xDeces_Hospit, na.rm = T)),
  .(ID)
]

Dates minimum et maximum du dernier service

DT[
  !is.na(DERNIER_SERVICE),
  `:=` (minDernServ = min(DERNIER_SERVICE),
        maxDernServ = max())
]

ID sans information

Extraire les observations qui n'ont aucune donnée :

idx <- DT[  # numéro lignes qui respectent les conditions
  , .I[is.na(DECES_FIPA) & is.na(DECES_HOSPIT_AUTRE) & is.na(DECES_HOSPIT_POSTMORTEM) & is.na(DERNIER_SERVICE)]
]
dt <- DT[idx]  # sélection des obs
dt[
  , .N,
  .(CatAge)
]


INESSS-QC/admissibilite1 documentation built on Aug. 7, 2020, 9:39 a.m.