IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Création d'un dataframe à partir d'une variable d'un autre dataframe


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Décembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Décembre 2015
    Messages : 11
    Par défaut Création d'un dataframe à partir d'une variable d'un autre dataframe
    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

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut aggregate
    Bonjour,

    Une alternative est de générer les sous-tables à l'aide de la fonction aggregate() et de les réunir à l'aide de la fonction merge(). Je préfère cette solution qui me semble plus lisible mais c'est une question d'habitude...

    Un fichier csv serait bienvenu si vous avez besoin de davantage d'aide (ajoutez une extension txt pour télécharger le fichier).

    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Décembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Décembre 2015
    Messages : 11
    Par défaut
    Bonjour mgdondon,

    Merci pour votre aide.

    J'ai pu m’arranger dans la premier partie du script avec les fonctions group by() et summarise() mais pour la seconde partie pour calculer des indicateurs de dispersions de prix je pense que je passerai par votre méthode en créant des sous tableaux avec aggregate () à agréger ensuite à ma table préalablement créée.

    Merci encore,

    Bien cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2020, 17h00
  2. [XL-2016] Chercher une cellule, à partir d'une variable d'un autre classeur
    Par Rydrake dans le forum Excel
    Réponses: 5
    Dernier message: 05/07/2017, 11h08
  3. Réponses: 1
    Dernier message: 02/06/2006, 21h18
  4. vérifier un fichier à partir d'une variable
    Par pharaonline dans le forum Langage
    Réponses: 5
    Dernier message: 28/05/2006, 20h51
  5. Exécuter une requête à partir d'une variable
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/03/2006, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo