Bonjour à toutes et tous,

J'espère que vous allez bien dans en cette période troublée,

J'ai un soucis sur R et je ne vois pas vraiment comment démarrer. Je m'explique

J'ai une table avec une ligne = un logement dans laquelle est renseignée des éléments de localisation (nom_epci, nom_scot, iris, adresse,...) mais aussi la période de construction de l'immeuble, si le logement fait une pièce, deux pièces, 3 pièces,... ( sachant qu'il y a 1 colonne par modalités ; donc si le logement est un deux pièces la colonne des autres nombres de pièces sera 0 ou NA), l'étage, la surface,...

Je souhaite créer à partir de ça une nouvelle table mais avec une ligne = 1 immeuble en groupant par id_immeuble et ensuite agréger mes données pour avoir :

id_immeuble | nom_scot | nom_epci |adresse_immeuble | Nombre de T1 dans l'immeuble | Nombre de T2 dans l'immeuble | .... | Surface Moyenne des T1 | Surface moyenne des T2 | ....


J'ai déjà un peu regardé et je pense qu'avec le tidyverse et notamment dplyr je pourrai m'en sortir en utilisant les fonctions group by(), summarise () ou mutate() pour créer des variables à partir de calculs sur des variables de ma table de départ (comme une évolution des prix de ventes dans l’immeuble où la part de T1 dans l'immeuble).

J'ai commencé à écrire le script suivant mais je pense mettre égarer dès le départ . Je n'arrive même pas à créer une nouvelle table en groupant par id_immeubles :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Logements <- read.csv2("logements.csv", encoding = "UTF-8")
 
Immeubles_test <- Logements %>%
 
  group_by(Logements$id_immeubles) %>% # regroupe ma table "logements par id_immeubles"
 
  summarise(Immeubles$nom_scot = Logements$nom_scot) %>% créer une variable en cherchant dans ma table de départ "logements" le scot où se trouve le logement et donc l'immeuble 
 
  summarise(Immeubles$nom_epci = Logements$nom_epci) %>% # créer une variable en cherchant dans ma table de départ "logements" l'epci où se trouve le logement et donc l'immeuble 
 
  summarise(Immeubles$periode_de_construction_imm = min(Logements$periode_de_construction_imm) %>% # prend l'époque de construction minimum trouvée dans la table de départ (car il peut y avoir différentes époques renseignées pour un même immeuble)
 
  summarise(Immeubles$t1 = sum(Logements$nbapt1pp)) # créer une variable en faisant la somme des logements T1 dans l'immeuble
Je pense que le que le script est mal écrit dès le départ mais j'ai détaillé pour que vous puissiez voir l'idée. Je regroupe par id_immeuble ma base de départ de façon à avoir une ligne = 1 immeuble sur laquelle j'ajoute des indicateurs directement calculer depuis les variables de ma table de départ.

L'autre idée à laquelle j'ai pensé mais qui est sans doutes plus chronophage est d'utiliser aggregate et de créer un Tableau_1 avec mes id_immeubles. J'en crée ensuite plusieurs autres avec les variables que je vais créer (tous agréger à l'id_immeuble). L'objectif étant après de faire une jointure à gauche de chacun de mes tableaux sur le Tableau_1 contenant les id_immeubles agrégés.

Je ne sais pas si je suis très clair mais si quelqu'un à une idée pour m'éclairer sur la manière de débuter mon script pour créer cette nouvelle table je suis preneur.

Merci d'avance pour les retours qu'il pourrait y avoir sur le sujet et désolé pour la longueur du message.

En attendant prenez soin de vous.

Antoine