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 :

Regroupement sur valeur identique et création de nouvelles variables sous conditions


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Par défaut Regroupement sur valeur identique et création de nouvelles variables sous conditions
    Bonjour à tous,
    Je suis assez débutante avec R et je travaille depuis maintenant 2 jours à trouver la solution à mon problème (qui ne me semble pourtant pas très compliqué). Je fais donc appel à vous. En fait, j'ai un data frame avec plus de 600 observations et 55 variables, par exemple:

    Nom : exemple dataframe.PNG
Affichages : 256
Taille : 17,3 Ko


    Je souhaite regrouper les observations qui ont le même ID, mais je veut aussi calculer de nouvelles variables pour chaque ID:
    1. Créer une nouvelle colonne "time.lenght" qui calcul le temps maximal moins le temps minimal de la colonne "time" (format 00:00).
    2. Créer une nouvelle colonne "new.n" qui calcul la moyenne de la colonne "n" et arrondir à l'entier inférieur.
    3. Créer une nouvelle colonne "prop.forage" qui calcul la moyenne de la colonne "fo", puis divise par la colonne créée précédemment (new.n).

    Mon résultat final devrait ressembler à ceci:

    Nom : exemple dataframe resultat.PNG
Affichages : 269
Taille : 7,7 Ko

    Individuellement, ces opérations sont faciles, mais je n'arrive pas à amalgamer le tout. Peut-être avez-vous une méthode par étape à me proposer?

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 14
    Par défaut
    Bonsoir tigremignon,

    Si tu peux utiliser le package data.table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    library(data.table)
    tbl <- data.table(dt) # dt est la data frame en question
    tbl[, list(new.n=..., time.length=..., forage=...), by = ID]
    Je laisse aussi un code complet qui fonctionne chez moi mais il y a probablement moyen de faire quelque chose de moins horrible (j'espère) surtout pour le time.length Si tu sais comment faire, je serai intéressé de voir une meilleure solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbl[, list(new.n=floor(mean(n)), time.length=strftime(as.POSIXct(as.numeric(max(as.POSIXct(time, format="%H:%M")) - min(as.POSIXct(time, format="%H:%M"))), origin=Sys.Date()), tz="UTC", format="%H:%M"), forage=mean(fo)/floor(mean(n))), by = ID]

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/05/2018, 10h10
  2. Problème création de nouvelles variables dans un data frame
    Par PLHOST56 dans le forum Général Python
    Réponses: 7
    Dernier message: 12/03/2018, 15h32
  3. Réponses: 6
    Dernier message: 18/10/2017, 15h23
  4. Création de nouvelle variable
    Par ant_1 dans le forum Débutez
    Réponses: 2
    Dernier message: 27/02/2012, 14h30
  5. Réponses: 3
    Dernier message: 11/07/2005, 15h20

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