Taux d'évolution par année

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Kévin Dubois
Messages : 97
Enregistré le : 25 Mar 2019, 12:07

Taux d'évolution par année

Messagepar Kévin Dubois » 05 Oct 2020, 09:22

Bonjour,

Je dispose d'un dataframe qui présente le nombre de nouveaux équipements par type construit depuis 1975 à 2020. Je souhaite créer une nouvelle colonne qui indique, pour chaque année et type d'équipement, le taux d'évolution des constructions. L'objectif étant de réaliser un geom_line pour montrer l'évolution des différents types d'équipements, année après année.

Voici un dataframe reproductible, similaire à celui sur lequel je travaille.

Code : Tout sélectionner

library(truncnorm)
library(lubridate)
library(tidyverse)

#Générer des colonnes numériques et catégorielles
data = data.frame(annee = as.integer(rtruncnorm(1000, a = 1975, b = 2020, mean = 2000, sd = 1000)), type_equipement = sample(c("Equipement1", "Equipement2", "Equipement3", "Equipement4", "Equipement5"), 1000, replace = TRUE), nombre_creation = as.integer(rtruncnorm(1000, a = 0, b = 10, mean = 3, sd = 1.5)))

#Convertir la colonne annee en variable de type "year"
data$annee = year(ymd(data$annee, truncated = 2L))

#Grouper par annee et type_equipement
data = data %>% group_by(annee, type_equipement) %>% summarise(nInAnnee = sum(nombre_creation)) %>% arrange(annee, type_equipement)


Est-il possible de faire ça sur R ?
Merci.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Taux d'évolution par année

Messagepar Pierre-Yves Berrard » 05 Oct 2020, 09:43

Bonjour,

Je n'avais pas le package rtruncnorm, donc j'ai recréé un petit jeu de données :

Code : Tout sélectionner

donnees <- data.frame(
  annee = rep(1999:2001, 2),
  type_equipement = rep(c("Equipement1", "Equipement2"), each = 3),
  nInAnnee = c(1, 4, 2, 8, 2, 6)
)

Proposition :

Code : Tout sélectionner

library(dplyr)
res <-
  donnees %>%
  arrange(type_equipement, annee) %>%
  group_by(type_equipement) %>%
  mutate(tx_evol_ann_pct = (nInAnnee / lag(nInAnnee) - 1) * 100)  %>%
  ungroup()
PY

Kévin Dubois
Messages : 97
Enregistré le : 25 Mar 2019, 12:07

Re: Taux d'évolution par année

Messagepar Kévin Dubois » 05 Oct 2020, 09:51

C'est génial, un grand merci à vous.

J'utilise truncnorm pour générer des nombres aléatoire, suivant une loi normale, et pour avoir la capacité d'utiliser un min et un max. C'est la seule solution que j'ai trouvé à ce jour.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité