Modérateur : Groupe des modérateurs
Code : Tout sélectionner
Table$date1 <- format(as.Date(Table$date1), format = "%Y/%m/%d")
Table$date2 <- format(as.Date(Table$date2), format = "%Y/%m/%d")
Code : Tout sélectionner
Table <- data.frame(
id = c(1, 2, 3, 4, 5),
nom = c("Paul", "Matthieu", "Camille", "Mireille", "Capucine"),
ville = c("Paris", "Marseille", "Lyon", "Lille", "Nantes"),
animal = c("Chat", "Chien", "Chat", "Chat", "Chien"),
date1 = c("30/04/2020", "30/03/2019", "31/12/2019", "28/02/2019", "30/06/2024"),
date2 = c("31/07/2020", "30/06/2020", "31/03/2020", "31/12/2019", "01/06/2023"),
jf = c(3, 9, 6, 21, -10)
)
Table$date1 <- format(as.Date(Table$date1), format = "%Y/%m/%d")
Table$date2 <- format(as.Date(Table$date2), format = "%Y/%m/%d")
library(dplyr)
library(purrr)
library(lubridate)
count_workingdays <- function(start, end) {
sum( wday(seq(from = start, to = end, by = "1 day")) %in% c(1:5) )
}
Table %>%
dplyr::mutate_at(.vars = vars(starts_with("date")), .funs = lubridate::dmy) %>%
filter(date1 <= date2) %>% # to exclude row 5 in your example
mutate(
NB_JOURS_RETARD = map2(.x = date1, .y = date2, .f = count_workingdays)
)
Code : Tout sélectionner
id nom ville animal date1 date2 jf NB_JOURS_RETARD
1 1 Paul Paris Chat 2020-04-30 2020-07-31 3 66
2 2 Matthieu Marseille Chien 2020-03-30 2020-06-30 9 67
3 4 Mireille Lille Chat 2020-02-28 2020-12-31 21 220
Code : Tout sélectionner
options(stringsAsFactors = FALSE)
Code : Tout sélectionner
str(data.frame(
id = c(1, 2, 3, 4, 5),
nom = c("Paul", "Matthieu", "Camille", "Mireille", "Capucine"),
ville = c("Paris", "Marseille", "Lyon", "Lille", "Nantes"),
animal = c("Chat", "Chien", "Chat", "Chat", "Chien"),
date1 = c("30/04/2020", "30/03/2019", "31/12/2019", "28/02/2019", "30/06/2024"),
date2 = c("31/07/2020", "30/06/2020", "31/03/2020", "31/12/2019", "01/06/2023"),
jf = c(3, 9, 6, 21, -10),
stringsAsFactors = TRUE # default in R < 4.0.0.
))
#> 'data.frame': 5 obs. of 7 variables:
#> $ id : num 1 2 3 4 5
#> $ nom : Factor w/ 5 levels "Camille","Capucine",..: 5 3 1 4 2
#> $ ville : Factor w/ 5 levels "Lille","Lyon",..: 5 3 2 1 4
#> $ animal: Factor w/ 2 levels "Chat","Chien": 1 2 1 1 2
#> $ date1 : Factor w/ 5 levels "28/02/2019","30/03/2019",..: 3 2 5 1 4
#> $ date2 : Factor w/ 5 levels "01/06/2023","30/06/2020",..: 4 2 3 5 1
#> $ jf : num 3 9 6 21 -10
Code : Tout sélectionner
str(data.frame(
id = c(1, 2, 3, 4, 5),
nom = c("Paul", "Matthieu", "Camille", "Mireille", "Capucine"),
ville = c("Paris", "Marseille", "Lyon", "Lille", "Nantes"),
animal = c("Chat", "Chien", "Chat", "Chat", "Chien"),
date1 = c("30/04/2020", "30/03/2019", "31/12/2019", "28/02/2019", "30/06/2024"),
date2 = c("31/07/2020", "30/06/2020", "31/03/2020", "31/12/2019", "01/06/2023"),
jf = c(3, 9, 6, 21, -10),
stringsAsFactors = FALSE # default in R >= 4.0.0.
))
#> 'data.frame': 5 obs. of 7 variables:
#> $ id : num 1 2 3 4 5
#> $ nom : chr "Paul" "Matthieu" "Camille" "Mireille" ...
#> $ ville : chr "Paris" "Marseille" "Lyon" "Lille" ...
#> $ animal: chr "Chat" "Chien" "Chat" "Chat" ...
#> $ date1 : chr "30/04/2020" "30/03/2019" "31/12/2019" "28/02/2019" ...
#> $ date2 : chr "31/07/2020" "30/06/2020" "31/03/2020" "31/12/2019" ...
#> $ jf : num 3 9 6 21 -10
Retourner vers « Questions en cours »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité