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 :

Grouper des dates n par n


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Grouper des dates n par n
    Bonjour, voici mon problème:

    Comment peut on regrouper les dates 2 par 2 , ou 3 par 3, etc ?


    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    individu |     Date       | Var1 
    A            2015-01-01    5         
    A            2015-01-02    7         
    A            2015-01-03    8         
    A            2015-01-04    2         
    A            2015-01-05    4         
    B            2015-01-01    9         
    B            2015-01-02    1         
    B            2015-01-03    0         
    B            2015-01-04    3         
    B            2015-01-05    8  
    C            2015-01-02   11         
    C            2015-01-03    4         
    C            2015-01-04    8         
    C            2015-01-05    5
    Et j'aimerais obtenir, par exemple pour une période de 2 jours, soit n=2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Individu | periode | somme (Var1)
    A                1          12
    A                2          10
    A                3            4
    B                1          10
    B                2            3
    B                3            8
    C                1          11
    C                2          12
    C                3            5
    Finalement dans cet exemple avec n=2, la période1 correspond aux 2 premiers jours de janvier, la période 2 correspond aux jours 3 et 4, etc ...

    Pour n=7, c'est facile, en modifiant le format de la date, je peux avoir un indicateur du numéro de la semaine. Mais pour un n quelconque, je n'ai pas encore trouvé de méthode rapide.
    J'ai indiqué somme(Var1) dans l'exemple, mais j'aimerais pouvoir faire aussi des moyennes sur la période, des comptages, etc ...

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Je suppose que la colonne Date est codée sous forme d'un vecteur d'objets Date de R. Si z est une date, alors z - 1 est la veille et z + 1 le lendemain (cf. la doc de Ops.Date)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    oui, je sais ça, mais je ne vois pas en quoi cela m'aide.
    Je ne suis sans doute pas assez calé en R (à vrai dire je débute et j'ai plus l'habitude de manipuler des données avec du sql).

  4. #4
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Alors, comment aurais-tu fais en SQL ?
    Note : il y n'y a aucune ironie dans ma question au contraire car, même s'il y a évidemment des différences entre les deux langages, il est souvent plus facile de penser la manipulation des données en R à partir d'une approche de type SQL que d'une approche à la C (voir les fonctions comme aggregate ou le package dplyr)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Mon problème semble résolu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    # Création de la base agrégée par période
    # Il y a pile 729 jours dans ma table
     
    # CHOIX du nombre de jours de la période = n
    n=10
     
    # calcul du nombre de périodes complètes de n jours
    nb_de_periodes=floor(729/n)
     
    # calcul du nb de jours restants hors période complète
    reste=729-n*nb_de_periodes
     
    #selection de la table des 729 dates
    s2=sqldf("select date_planning from s1 group by DATE_PLANNING ")
     
    # création d'une variable PERIODE indiquant l'appartenance à la période
    s2$periode=c(rep(1:nb_de_periodes, each=n),rep(nb_de_periodes+1,each=reste))
    Ensuite, je fusionne cette table s2 (qui associe à chaque date son indicateur de numéro de période) avec ma table d'origine.
    Enfin, je selectionne ce qui m'intéresse avec un group by (sqldf).

    Donc ça fonctionne, en modifiant le paramètre n du début, on peut agréger selon le nombre de jours souhaités, mais encore une fois je m'en sors avec du sql et très peu de R !

  6. #6
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    La personne connaissant mieux SQL que R s'en sortira mieux avec SQL que R tandis que celle connaissant mieux R que SQL s'en sortira mieux avec R même si les deux solutions sont similaires, seuls les noms des fonctions et la syntaxe seront différents. R présente de l'intérêt si on veut faire ensuite des analyses statistiques sur les données par contre si ce n'est que de la manipulation de données (par obligatoirement simple, je connais aussi les bases de données relationnelles et ce qu'on peut faire avec) et qu'on a l'habitude de SQL, alors il faut mieux rester avec ce langage.

    Le choix entre R et SQL n'est pas entre un langage et un 'meilleur' langage. D'ailleurs comme tous les choix entre différents langages, il s'agit d'utiliser le langage le mieux approprié à son problème. Par exemple, utiliser du C pour faire du calcul formel n'est peut-être pas le meilleur choix même si c'est possible.

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

Discussions similaires

  1. Grouper des dates par semaines
    Par Nour08 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/07/2011, 10h43
  2. Pb de format des dates reçues par MySQL
    Par alter dans le forum Administration
    Réponses: 0
    Dernier message: 24/08/2010, 09h42
  3. grouper des dates par mois?
    Par Hydex dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/06/2007, 17h00
  4. [Date] Grouper des dates par semaine
    Par KooKoolen dans le forum Langage
    Réponses: 3
    Dernier message: 06/12/2006, 11h05
  5. [CR]grouper des dates par semaines, mais semaines FR !
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 18/05/2004, 20h43

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