library(dplyr)
## 
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
## 
##     filter, lag
## Les objets suivants sont masqués depuis 'package:base':
## 
##     intersect, setdiff, setequal, union

Exercice 1

date0 <- seq.Date(as.Date("2023-01-01"), as.Date("2023-01-10"), by ="day")
price <- c(100, 105, 110, 108, 112, 115, 118, 120, 122, 125)
print(price)
##  [1] 100 105 110 108 112 115 118 120 122 125
data0 <- data.frame(date0, price)
print(data0)
##         date0 price
## 1  2023-01-01   100
## 2  2023-01-02   105
## 3  2023-01-03   110
## 4  2023-01-04   108
## 5  2023-01-05   112
## 6  2023-01-06   115
## 7  2023-01-07   118
## 8  2023-01-08   120
## 9  2023-01-09   122
## 10 2023-01-10   125

Exercice 2

x <- c("2016-01-02", "2016-02-02", "2016-03-02", "2016-04-02", "2016-05-02", "2016-06-02", "2016-07-02", "2016-08-02", "2016-09-02", "2016-10-02")

temps1 <- as.Date("2016-01-02", format = "%Y-%m-%d")


temps2 <- as.Date("2016-10-02", format = "%Y-%m-%d")

date2 <- seq(from = temps1, to = temps2, by = "month")

data2 <- data.frame(id = 1:10, date2)


data2 <- data2 %>% mutate(mois = format(date2, "%m"), jour = format(date2, "%d"))
print(data2)
##    id      date2 mois jour
## 1   1 2016-01-02   01   02
## 2   2 2016-02-02   02   02
## 3   3 2016-03-02   03   02
## 4   4 2016-04-02   04   02
## 5   5 2016-05-02   05   02
## 6   6 2016-06-02   06   02
## 7   7 2016-07-02   07   02
## 8   8 2016-08-02   08   02
## 9   9 2016-09-02   09   02
## 10 10 2016-10-02   10   02

Exercice 3

temps1 <- as.POSIXct("2025-01-23 15:00:00")

temps2 <- as.POSIXct("2025-01-23 21:00:00")

date3 <- seq(temps1, temps2, by = "hour")

data3 <- data.frame(id = 1:7, date3)

data3 <- data3 %>% mutate(mois = format(date3,  "%m"),
                          jour = format(date3, "%d"))
print(data3)
##   id               date3 mois jour
## 1  1 2025-01-23 15:00:00   01   23
## 2  2 2025-01-23 16:00:00   01   23
## 3  3 2025-01-23 17:00:00   01   23
## 4  4 2025-01-23 18:00:00   01   23
## 5  5 2025-01-23 19:00:00   01   23
## 6  6 2025-01-23 20:00:00   01   23
## 7  7 2025-01-23 21:00:00   01   23

Exercice 4

# Ajout du temps écoulé à la date d'aujourd'hui
library(lubridate)
## Warning: le package 'lubridate' a été compilé avec la version R 4.4.2
## 
## Attachement du package : 'lubridate'
## Les objets suivants sont masqués depuis 'package:base':
## 
##     date, intersect, setdiff, union
tableau <- data3 %>% mutate(aujourdhui = Sys.Date(),
jours_ecoules = as.numeric(difftime(aujourdhui, date3, units = "days")),
semaines_ecoules = round(jours_ecoules/7,1),
mois_ecoules = round(jours_ecoules/30, 1),
annees_ecoules = round(jours_ecoules/365, 2)) 

print(tableau)
##   id               date3 mois jour aujourdhui jours_ecoules semaines_ecoules
## 1  1 2025-01-23 15:00:00   01   23 2025-01-26      2.416667              0.3
## 2  2 2025-01-23 16:00:00   01   23 2025-01-26      2.375000              0.3
## 3  3 2025-01-23 17:00:00   01   23 2025-01-26      2.333333              0.3
## 4  4 2025-01-23 18:00:00   01   23 2025-01-26      2.291667              0.3
## 5  5 2025-01-23 19:00:00   01   23 2025-01-26      2.250000              0.3
## 6  6 2025-01-23 20:00:00   01   23 2025-01-26      2.208333              0.3
## 7  7 2025-01-23 21:00:00   01   23 2025-01-26      2.166667              0.3
##   mois_ecoules annees_ecoules
## 1          0.1           0.01
## 2          0.1           0.01
## 3          0.1           0.01
## 4          0.1           0.01
## 5          0.1           0.01
## 6          0.1           0.01
## 7          0.1           0.01

Représentation graphique

library(ggplot2)
ggplot(data = tableau, aes(x = date3, y = jours_ecoules)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(
    title = "Temps écoulé en jours depuis chaque date",
    x = "Date initiale",
    y = "Jours écoulés"
  ) +
  theme_minimal()

library(tidyr)

# Transformation des données au format long
tableau_long <- tableau %>%
  select(date3, jours_ecoules, semaines_ecoules, mois_ecoules, annees_ecoules) %>%
  pivot_longer(
    cols = c(jours_ecoules, semaines_ecoules, mois_ecoules, annees_ecoules),
    names_to = "unite_temps",
    values_to = "valeur"
  )

# Graphe à barres empilées
ggplot(data = tableau_long, aes(x = date3, y = valeur, fill = unite_temps)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(
    title = "Temps écoulé par unité de temps",
    x = "Date initiale",
    y = "Valeur",
    fill = "Unité de temps"
  ) +
  theme_minimal()