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()
