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

MATLAB Discussion :

Suppression de valeurs


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    Mai 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 76
    Points : 57
    Points
    57
    Par défaut Suppression de valeurs
    Bonjour à tous,

    J'ai une matrice 2 colonnes (une DATE sous la forme AAAAMMJJ et la seconde des valeurs)
    J'aimerai que lorsque le nombre de jour dans le mois est inférieur à 25 on supprime toutes les données du mois

    EXemple on a :
    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
    19
    20
    20090301	6,15
    20090302	14
    20090303	14,4
    20090304	7,3
    20090305	14
    20090801	1,65
    20090802	0
    20090803	0
    20090804	8,7
    20090805	5,5
    20090806	0
    20090807	0
    20090808	3,55
    20090809	2,3
    20090810	0
    20090811	0
    20090812	11,25
    20090813	0
    20090814	0,2
    20090815	0
    du coup le mois de mars ne compte que 5 jours j'aimerai supprimer de ma matrice ces cinq lignes. Il faudrait trouver un moyen d'automatiser car j'ai plusieurs séries, certaines bonnes, d'autres où les mois à supprimer sont différents ...

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    On va commencer par obtenir le mois seul : (data étant le tableau que tu présentes dans ton message)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mois = mod(round(data(:,1)/100),100);
    Puis on calcule le nombre de jours dans chaque mois avec les fonctions unique + accumarray (voir FAQ Comment regrouper des éléments selon des valeurs communes ? pour plus de détails)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [unik, ~, ic] = unique(mois);
    nbJours = accumarray(ic(:), mois, [numel(unik) 1], @numel);
    On repère les mauvais mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    minJours = 25;
    mauvais_mois = unik(nbJours < minJours);
    Et on les supprime des données initiales:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data(ismember(mois, mauvais_mois), :) = [];

  3. #3
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    Mai 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 76
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    J'ai bien compris la logique du code, mais j'ai 10 ans donc 10 fois le mois de janvier, 10 fois le mois de février ....
    "Unik" est un vecteur de 1 à 12, et donc "nbJours" somme tous les jours de janvier des 10 ans soit 310.
    Donc lorsque j'applique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mauvais_mois = unik(nbJours < minJours);
    j'ai rien inférieur à 25.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Effectivement, dans ce cas, on va prendre le mois, mais aussi l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mois = mod(round(data(:,1)/100),100);

  5. #5
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    Mai 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 76
    Points : 57
    Points
    57
    Par défaut
    C'est super merci beaucoup

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

Discussions similaires

  1. [Débutant] Suppression de valeur sur plusieur table
    Par neuneu1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/11/2007, 14h11
  2. Suppression de valeurs dans listbox
    Par airbeone dans le forum Access
    Réponses: 3
    Dernier message: 30/11/2006, 09h26
  3. Suppression de valeurs dans une liste
    Par Bayard dans le forum Général Python
    Réponses: 2
    Dernier message: 26/04/2006, 10h19
  4. Réponses: 3
    Dernier message: 24/05/2005, 08h19
  5. suppression where valeur null
    Par jecht dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/06/2004, 16h19

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