library(data.table)
library(lubridate)
# Datasets d'analyse ------------------------------------------------------------------------------
data_admis <- data.table(
ID = c(1, 1, 2, 3, 4, 5),
DateNais = c(-100, -100, -98, -97, -96, 201),
DateDeces = c(NA, NA, NA, NA, 170, NA),
DebutAdmis = c(1, 21, 47, 90, 150, 201),
FinAdmis = c(10, 30, 60, 130, 170, 260)
)
data_admis[, `:=` (ID = as.integer(ID),
DateNais = as_date(DateNais) + 15000,
DateDeces = as_date(DateDeces) + 15000,
DebutAdmis = as_date(DebutAdmis) + 15000,
FinAdmis = as_date(FinAdmis) + 15000)]
data_index <- data.table(
ID = c(1, 2, 3, 4, 5),
DebutIndex = c(1, 41, 101, 161, 195),
FinIndex = c(10, 50, 110, 180, 300)
)
data_index[, `:=` (ID = as.integer(ID),
DebutIndex = as_date(DebutIndex) + 15000,
FinIndex = as_date(FinIndex) + 15000)]
# Manipulations -----------------------------------------------------------------------------------
dt <- merge( # Joindre les admis au dataset index
data_admis, data_index,
by = "ID",
all.y = TRUE # conserver toutes les valeurs de index
)
dt <- dt[FinAdmis >= DebutIndex & DebutAdmis <= FinIndex] # conserver les admis qui chevauchent index
dt[DebutAdmis < DebutIndex, DebutAdmis := DebutIndex] # ajuster les dates Admis pour les inclure dans l'intervalle index
dt[FinAdmis > FinIndex, FinAdmis := FinIndex]
dt[, `:=` (nJours_index = as.integer(FinIndex - DebutIndex + 1L), # indiquer le nombre de jour pour index et admis
nJours_admis = as.integer(FinAdmis - DebutAdmis + 1L))]
dt[, ratio := nJours_admis / nJours_index] # ratio indiquant le nombre de jours admissible dans index
dt[, estNe := FALSE][DebutIndex <= DateNais & DateNais <= FinIndex, estNe := TRUE]
dt[, estDCD := FALSE][DebutIndex <= DateDeces & DateDeces <= FinIndex, estDCD := TRUE]
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.