knitr::opts_chunk$set(echo = TRUE, comment = "#>", out.width = "100%") library(data.table) library(lubridate)
Joindre des périodes d'admissibilité à des périodes index. On conservera les périodes d'admissibilité qui chevauchent au moins une journée la période index.
import_struct()
. Indique le début et la fin d'une période d'admissibilité sans interruption pour un ID.# Création des datasets d'analyse data_admis <- data.table( # dataset créé par la fonction import_struct() 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[ # arranger le dataset pour le rendre vraisemblable , `:=` (ID = as.integer(ID), DateNais = as_date(DateNais) + 15000, DateDeces = as_date(DateDeces) + 15000, DebutAdmis = as_date(DebutAdmis) + 15000, FinAdmis = as_date(FinAdmis) + 15000) ][] # afficher tableau data_index <- data.table( # dataset fourni par l'utilisateur ID = c(1, 2, 3, 4, 5, 6), DebutIndex = c(1, 41, 101, 161, 195, 301), FinIndex = c(10, 50, 110, 180, 260, 310) ) data_index[ # arranger le dataset pour le rendre vraisemblable , `:=` (ID = as.integer(ID), DebutIndex = as_date(DebutIndex) + 15000, FinIndex = as_date(FinIndex) + 15000) ][] # afficher tableau # Manipulations dt <- merge( # joindre les périodes admis à index data_admis, data_index, # admis en premier pour avoir DateNais+DateDeces au début by = "ID" ) dt[] dt <- dt[FinAdmis >= DebutIndex & DebutAdmis <= FinIndex] # conserver les admis qui chevauchent index dt[] dt[DebutAdmis < DebutIndex, DebutAdmis := DebutIndex] # ajuster les dates Admis pour les inclure dans dt[FinAdmis > FinIndex, FinAdmis := FinIndex] # l'intervalle index dt[] dt[, `:=` (nJours_index = as.integer(FinIndex - DebutIndex + 1L), # indiquer le nombre de jour pour nJours_admis = as.integer(FinAdmis - DebutAdmis + 1L))] # index et admis dt[] dt[, ratio := nJours_admis / nJours_index] # ratio indiquant le nombre de jours admissible dans index dt[, estNe := FALSE] # indiquer si ID est né lors de la période index dt[DebutIndex <= DateNais & DateNais <= FinIndex, estNe := TRUE] dt[, estDCD := FALSE] # indiquer si ID est décédé lors de la période index dt[DebutIndex <= DateDeces & DateDeces <= FinIndex, estDCD := TRUE] dt[] dt[, Admis_Continue := FALSE] dt[ratio == 1, Admis_Continue := TRUE] dt[] dt[, Admis_Continue_Nais := FALSE] # admis en continue depuis sa naissance dt[ # TRUE si période index commence avant naissance, mais ID toujours admissible DateNais == DebutAdmis # admissible à partir de la naissance & DebutAdmis >= DebutIndex # admissible après début index & FinAdmis == FinIndex, # admissible jusqu'à la fin Admis_Continue_Nais := TRUE ] dt[, Admis_Continue_Deces := FALSE] # admis en continue jusqu'à sa mort dt[ DebutAdmis == DebutIndex # admissible dès le début & DebutIndex <= DateDeces & DateDeces <= FinIndex # date de décès dans intervalle index & FinAdmis == DateDeces, # admissible jusqu'à sa mort Admis_Continue_Deces := TRUE ]
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.