0
votes

Comment développer une DF Créer des lignes en fonction de la différence de deux dates dans chaque ligne?

J'ai un DF avec l'ID, les dates d'enregistrement et vérifiez les patients et le nombre de jours dans un hôpital. J'ai besoin d'un nouveau df où j'ai une instance d'identité pour chaque jour entre la date à laquelle un patient est enregistré et vérifié. XXX PRE>

J'ai besoin de quelque chose comme ça, pour les 2 premières lignes ci-dessus xxx pré>

mon système: R version 3.5.1 (2018-07-02) Plate-forme: x86_64-Apple-Darwin15.6.0 (64 bits) Exécution sous: MacOS 10.14.4 P>

# Here is my original DF:

df <- structure(list(id = c("4317107984013", "4317107984035", "4317107984046", 
"4317107984057", "4317107984079", "4317107984090", "4318100215913", 
"4317108791611", "4317107931059", "4317108756092"), dt_in = structure(c(17482, 
17492, 17488, 17497, 17485, 17489, 17535, 17514, 17493, 17493
), class = "Date"), dt_out = structure(c(17498, 17499, 17499, 
17499, 17499, 17499, 17535, 17514, 17493, 17527), class = "Date"), 
    stay = c(16L, 7L, 11L, 2L, 14L, 10L, 0L, 0L, 0L, 34L)), row.names = c(NA, 
10L), class = "data.frame")



0 commentaires

4 Réponses :


2
votes
library(tidyverse)
library(lubridate)
dat%>%
  group_by(id)%>%
  transmute(dt = list(seq(ymd(dt_in),ymd(dt_out),1)))%>%
  unnest()

# A tibble: 104 x 2
# Groups:   id [10]
   id            dt        
   <chr>         <date>    
 1 4317107984013 2017-11-12
 2 4317107984013 2017-11-13
 3 4317107984013 2017-11-14
 4 4317107984013 2017-11-15
 5 4317107984013 2017-11-16
 6 4317107984013 2017-11-17
 7 4317107984013 2017-11-18
 8 4317107984013 2017-11-19
 9 4317107984013 2017-11-20
10 4317107984013 2017-11-21
# ... with 94 more rows

1 commentaires

Ce code a fonctionné comme un charme dans chaque DF que j'ai testé, même grandes. Merci pour l'aide



2
votes

avec dplyr et titsyr , vous pouvez faire: xxx


1 commentaires

Merci. Ça a marché. Lorsque j'ai utilisé dans un ensemble de données volumineux (12 millions de lignes) avaient une erreur. Je le publierai bientôt.



0
votes

une option avec map2 xxx


ou une option avec base r xxx < / pré>


0 commentaires

1
votes

Vous pouvez utiliser Uncount à partir de tiardy - xxx


0 commentaires