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 :

ajout d'objets de type dates (POSIXlt / POSIXct) dans une structure dynamique


Sujet :

R

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut ajout d'objets de type dates (POSIXlt / POSIXct) dans une structure dynamique
    Bonjour,

    J'aimerais savoir quelle est la structure de données adaptée pour pouvoir y ajouter des élements (dates) de manière dynamique.
    J'aimerais recopier des dates (dont je connais pas à l'avance la taille totale) vers cette structure.

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    La question est un peu vague... pourrais-tu nous en dire davantage sur les contraintes, ou ce que tu souhaites faire ?
    Ces informations doivent-elles être couplées à d'autres ou non ?

    De simples vecteurs de la classe (POSIXlt / POSIXct) peuvent dans une certaine mesure remplir ces conditions...
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut
    J'ai des données du type {date (sur l'axe des abscisses), valeurs (axe des ordonnées)}:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    1;2011-08-29 00:00:00;46;
    2;2011-08-29 00:01:00;23;
    3;2011-08-29 00:02:00;21;
    4;2011-09-01 00:01:00;20;
    5;2011-09-01 00:02:00;29;
    6;2011-09-01 00:03:00;36;
    7;2011-09-02 00:01:00;42;
    8;2011-10-01 00:06:00;49;
    Ces données sont stockées dans un vecteur de "character".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dftest2 <- read.csv("~/R/test3.csv", sep=";")
    df_dates = dftest2[2]
    v_all_dates = as.matrix(df_dates)[,]
    Puis je convertis dans un format POSIXlt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    l_all_dates_lt = as.POSIXlt(v_all_dates)

    J'aimerais selectionner un intervalle. Par exemple: récupérer les données du mois de septembre (2011-09-xx)

    J'ai fait une boucle while() et j'ai parcouru la liste l_all_dates_lt jusqu'à ce que j'ai le dernier élement (dernière date du mois de septembre) afin de récupérer les indices correspondant à la première date (from_index) et la dernière date (to_index) du mois de septembre.

    Une fois que j'obtiens les indices, je crée une nouvelle liste contenant l'intervalle voulu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user_dates_lt = l_all_dates_lt[from_index:to_index]
    ma question:
    N'y a-t-il pas un moyen de remplir une structure de données ( une liste L par exemple ) au fur et à mesure qu'on parcourt la liste de départ l_all_dates_lt. J'aimerais par la suite plot-er sur l'axe des abscisses le résultat. j'ai envie de faire:

    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
    l_user_date = as.POSIXlt("2011-09-01 23:59:00")
    i = 1
    L = list()
    while(l_all_dates_lt[i]<=l_user_date){
      if((l_user_date$year == l_all_dates_lt[i]$year) &&
        (l_user_date$mon == l_all_dates_lt[i]$mon) && (l_user_date$mday == l_all_dates_lt[i]$mday)){
        #L = c(l, list(l_all_dates_lt[i])) #1
        #L = c(L, l_all_dates_lt[i]) #2
        cpt = cpt + 1;
        if(cpt == 1){
          from_ind = i
        }
      }
      i = i + 1
    }
    J'ai testé le remplissage d'une liste à la volée comme indiquée sur la ligne 7 (#1). J'obtiens à peu près ce que je voulais mais je ne sais pas comment le ploter car pour acceder aux eléments de L il faut faire L[[k]]... j'ai envie de faire quelque chose du type :
    plot(L, ...) mais ca ne marche pas.

    Puis j'ai essayé d'une autre manière, ligne 8 (#2) et c'est encore pire car je n'obtiens pas une liste de date mais une liste d'année, mois, jour ...

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 27
    Points
    27
    Par défaut
    Bonjour,
    à tout hasard en faisant un unlist de L pour le graphe:

    Pas du tout sûr que ça marche...

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut
    En faisant unlist(), j'obtiens un vecteur du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sec   min  hour  mday   mon  year  wday  yday isdst   sec   min  hour  mday   mon  year  wday  yday isdst 
        0     1     0     1     8   111     4   243     1     0     2     0     1     8   111     4   243     1 
      sec   min  hour  mday   mon  year  wday  yday isdst 
        0     3     0     1     8   111     4   243     1
    chaque élement du vecteur est soit le jour, soit le mois, soit l'année, etc. Alors que ce que je voulais, c'est que chaque élement soit une date du genre jj/mm/aa (de type POSIXlt par exemple)

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/05/2012, 18h16
  2. Ajouter un attribut de type date dans MySql
    Par L'aigle de Carthage dans le forum JDBC
    Réponses: 19
    Dernier message: 16/01/2012, 11h54
  3. ajout de colonne de type date time
    Par hoolako dans le forum Informix
    Réponses: 1
    Dernier message: 31/03/2009, 23h10
  4. [POO] un objet de type date
    Par nox75 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/05/2007, 11h41
  5. Ajouter un champs de type " Date " dans ma base ac
    Par hysteresis dans le forum Langage SQL
    Réponses: 16
    Dernier message: 10/10/2005, 16h10

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