1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
df1 = CONSO_AVANT_TRAITEMENT
## j'ai nommé ton tableau de données df1
periodes <- tibble(periode = c('2015-04-01','2015-05-01','2015-06-01','2015-07-01','2015-08-01','2015-09-01',
'2015-10-01','2015-11-01','2015-12-01','2016-01-01','2016-02-01','2016-03-01',
'2016-04-01','2016-05-01','2016-06-01','2016-07-01','2016-08-01','2016-09-01'))# dataframe contenant tes 18 périodes
class (periodes$periode)
periodes$periode = as.Date(periodes$periode,format="%Y-%m-%d")
class (periodes$periode)
ajouter <- function(id,df,periodes){
df_id <- df %>% filter(IU_USAGER == id) ## filtre avec identitiant
autres_colonnes <- df %>% select(-1,-2,-3)%>% distinct() ## selection des valeurs des autres colonnes pour ajout ultérieur
periodes_manquantes <- periodes %>% anti_join(df_id ,by= c('periode' = "date" ) ) ## on sélectionne les dates manquantes
ajout <- map_df(periodes_manquantes,~(tibble(IU_USAGER = id,date = .x,CONS_HEURES_MOIS = 0) %>% bind_cols(autres_colonnes))) ## on crée les lignes à ajouter
df_id %>% bind_rows(ajout) ## on les rajoute au lignes déjà existantes
}
df2 <- map_df(unique(df1$IU_USAGER),ajouter,df = df1 ,periodes = periodes) ## creation du fichier demandé |
Partager