Discussion: Filtre de dates

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2017
    Messages : 12
    Points : 5
    Points
    5

    Par défaut Filtre de dates

    Bonjour,

    Je viens à nouveaux solliciter votre aide précieuse. J'ai un fichier csv contenant plusieurs colonnes, l'une à pour titre date_analyse et contient des dates. j'ai envie de filtrer mes données par date d'analyse (au format: année-mois-jour heure:minute:seconde). Pour ce faire j'ai créer une fonction qui initialise mes données de base en les filtrant par les mois et l'année que je veux. Le problème c'est que, quand j'applique cette fonction, mon résultat est filtré partiellement. Je n'ai pas toutes les données consernant la période que j'ai choisis. Normalement après filtre je dois avoir 22166 lignes. Alors que moi je n'ai que 11082.
    Voici mon code:

    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
     
    donnees = read.csv2("20170824_qt1_matriciel.csv", sep =";", header=TRUE)
     
    init = function(donnees,Mois,Annee){
      data = donnees
      data$date = as.POSIXlt(strptime(data$date_analyse, "%Y-%m-%d %H:%M:%S"))
      data$mois = format(data$date, "%B")
      data$annee = format(data$date, "%Y")
      data = data[data$annee == Annee,]
      data = data[data$mois %in% Mois,]
      return(data)
    }
     
    S1 = c("janvier","février", "mars", "avril", "mai", "juin")
    Annee1 = "2017"
     
    d = init(donnees,S1,Annee1)
    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    novembre 2009
    Messages
    305
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 305
    Points : 597
    Points
    597

    Par défaut Filtre de dates

    Bonjour,

    Votre programme semble fonctionner correctement.

    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
    donnees = read.csv2("d:/temp/test.txt")
     
    init = function(donnees,Mois,Annee){
      data = donnees
      data$date = as.POSIXlt(strptime(data$date_analyse, "%d/%m/%Y %H:%M:%S"))
      data$mois = format(data$date, "%B")
      data$annee = format(data$date, "%Y")
      data = data[data$annee == Annee,]
      data = data[data$mois %in% Mois,]
      return(data)
    }
     
    S1 = c("janvier","février", "mars", "avril", "mai", "juin")
    Annee1 = "2016"
     
    d = init(donnees,S1,Annee1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > d
             date_analyse                date    mois annee
    1 01/01/2016 12:00:00 2016-01-01 12:00:00 janvier  2016
    2 01/02/2016 12:00:00 2016-02-01 12:00:00 février  2016
    3 01/03/2016 12:00:00 2016-03-01 12:00:00    mars  2016
    4 01/04/2016 12:00:00 2016-04-01 12:00:00   avril  2016
    5 01/05/2016 12:00:00 2016-05-01 12:00:00     mai  2016
    6 01/06/2016 12:00:00 2016-06-01 12:00:00    juin  2016
    Il faudrait vérifier le contenu du fichier csv (est-ce que toutes les dates sont bien remplies et au même format ?) et l'import du fichier dans R.

    Avant de sélectionner sur la date, vous pouvez générer les variables année et mois et faire un tableau de fréquences.

    Cordialement,

    PS : Il vaut mieux utiliser les balises [CODE] que [QUOTE] autour de votre code. C'est plus facile à lire.
    Fichiers attachés Fichiers attachés

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2017
    Messages : 12
    Points : 5
    Points
    5

    Par défaut

    [QUOTE=mgdondon;9571970]Bonjour,

    Votre programme semble fonctionner correctement.

    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
    donnees = read.csv2("d:/temp/test.csv")
     
    init = function(donnees,Mois,Annee){
      data = donnees
      data$date = as.POSIXlt(strptime(data$date_analyse, "%d/%m/%Y %H:%M:%S"))
      data$mois = format(data$date, "%B")
      data$annee = format(data$date, "%Y")
      data = data[data$annee == Annee,]
      data = data[data$mois %in% Mois,]
      return(data)
    }
     
    S1 = c("janvier","février", "mars", "avril", "mai", "juin")
    Annee1 = "2016"
     
    d = init(donnees,S1,Annee1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > d
             date_analyse                date    mois annee
    1 01/01/2016 12:00:00 2016-01-01 12:00:00 janvier  2016
    2 01/02/2016 12:00:00 2016-02-01 12:00:00 février  2016
    3 01/03/2016 12:00:00 2016-03-01 12:00:00    mars  2016
    4 01/04/2016 12:00:00 2016-04-01 12:00:00   avril  2016
    5 01/05/2016 12:00:00 2016-05-01 12:00:00     mai  2016
    6 01/06/2016 12:00:00 2016-06-01 12:00:00    juin  2016
    Il faudrait vérifier le contenu du fichier csv (est-ce que toutes les dates sont bien remplies et au même format ?) et l'import du fichier dans R.

    Avant de sélectionner sur la date, vous pouvez générer les variables année et mois et faire un tableau de fréquences. (Les mois sont-ils écrits en français ou en anglais ?)

    Cordialement,

    PS : Il vaut mieux utiliser les balises [CODE] que [QUOTE] autour de votre code. C'est plus facile à lire.


    Bonjour,

    Je n'ai pas de soucis avec l'import du fichier dans R. Je retrouve bien les données que j'avais auparavant. Dans mon fichier csv j'ai quelques lignes de date qui sont vides et quelques lignes qui sont au format année-mois-jour au lieu de année-mois-jour heure:minute:seconde. Les mois et années dans mon fichier csv sont au format numériques. Je n'ai pas bien compris ce que vous vouliez dire par :
    Avant de sélectionner sur la date, vous pouvez générer les variables année et mois et faire un tableau de fréquences.
    ?

    Cordialement,

  4. #4
    Membre confirmé
    Inscrit en
    novembre 2009
    Messages
    305
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 305
    Points : 597
    Points
    597

    Par défaut

    Pour mettre un programme au point, il faut aller pas à pas.

    Vérifiez chaque étape avant de faire une fonction.

    La première étape est de générer les variables année et mois et vérifier ce qui a été généré.

    Maintenant si toutes vos dates ne sont pas au même format dans votre fichier csv, c'est normal que ça ne marche pas.

    Cordialement,

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2017
    Messages : 12
    Points : 5
    Points
    5

    Par défaut

    Pour les variables Annee et Mois après vérifiaction j'obtiens bien l'annee "2017" mais pas le mois de "janvier" et "février". Je ne sais pas pourquoi.

    Concernant le format des dates dans mon fichier csv, j'ai supprimé la partie concernant l'heure pour avoir le même format partout. Mais malheureusement j'ai toujours le même problème.

    Merci d'avance,

  6. #6
    Membre confirmé
    Inscrit en
    novembre 2009
    Messages
    305
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 305
    Points : 597
    Points
    597

    Par défaut Filtre de dates

    Avez-vous vérifié qu'il n'y a pas d'autres formats de dates (slash à la place de tirets, ordre jour/mois/année différent) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    > data <- data.frame(date_analyse=c("2016-01-01 12:00:00","2016-01-01","2016/02/01 12:00:00"))
    > data$date = as.POSIXlt(strptime(data$date_analyse, "%Y-%m-%d %H:%M:%S"))
    > data
             date_analyse                date
    1 2016-01-01 12:00:00 2016-01-01 12:00:00
    2          2016-01-01                <NA>
    3 2016/02/01 12:00:00                <NA>
    Pouvez-vous fournir un court extrait de votre fichier ?

    Cordialement,

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2017
    Messages : 12
    Points : 5
    Points
    5

    Par défaut

    Bonjour,

    Vraiment désolé pour le retard. Pour votre question:

    Pouvez-vous fournir un court extrait de votre fichier ?
    , malheureusement je ne peux vous le fournir vu qu'il s'agit d'un fichier comportement des informations confidentielles. Je crois bien aussi que cela soucis devrait provenir du format de la colonne date_analyse (Vu que toutes les dates de sont pas au bon format). Car dans mes données, j'ai une autre colonne appelée date_reponse sur laquelle j'ai appliquée ma fonction et ça à marcher.

    Ceci m'amène à cette question: Comment faire pour mettre au propre une colonne de données? Vu qu'ici ma colonne ne respecte pas un format précis.

    Cordialement.

  8. #8
    Membre confirmé
    Inscrit en
    novembre 2009
    Messages
    305
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 305
    Points : 597
    Points
    597

    Par défaut Filtre de dates

    Bonjour,

    malheureusement je ne peux vous le fournir vu qu'il s'agit d'un fichier comportement des informations confidentielles
    Vous pouvez sélectionner une cinquantaine de dates indépendamment de toute autre variable.


    Comment faire pour mettre au propre une colonne de données ? Vu qu'ici ma colonne ne respecte pas un format précis.
    Soit vous nettoyez votre fichier en amont soit vous prévoyez différents formats de lecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > data <- data.frame(date_analyse=c("2016-01-01 12:00:00","2016-01-01","2016/02/01 12:00:00"))
    > data$date <- as.POSIXlt(strptime(data$date_analyse, "%Y-%m-%d %H:%M:%S"))
    > data$date[is.na(data$date)] <- as.POSIXlt(strptime(data$date_analyse[is.na(data$date)], "%Y/%m/%d %H:%M:%S"))
    > # etc.
    > data
             date_analyse                date
    1 2016-01-01 12:00:00 2016-01-01 12:00:00
    2          2016-01-01                <NA>
    3 2016/02/01 12:00:00 2016-02-01 12:00:00
    Cordialement,

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2017
    Messages : 12
    Points : 5
    Points
    5

    Par défaut

    Bonjour,

    Merci beaucoup pour votre patience. En prévoyant plusieurs formats effectivement, le code marche à présent. C'est génial. Merci encore.

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

Discussions similaires

  1. probleme avec l filtre des date
    Par kroma23 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/05/2007, 17h32
  2. Formulaire filtré par date
    Par Guizbizet dans le forum IHM
    Réponses: 7
    Dernier message: 21/12/2006, 18h48
  3. Problème de filtre sur date avec ADOQuery
    Par lingli dans le forum Bases de données
    Réponses: 12
    Dernier message: 30/04/2006, 16h40
  4. Filtre sur date
    Par MagicManu dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2005, 01h05
  5. Filtre et date
    Par Shogun dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/11/2004, 09h46

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