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 :

Affectation d'une valeur selon des conditions


Sujet :

R

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Affectation d'une valeur selon des conditions
    Bonjour,

    je pars de 3 tables:
    -table de base "ML": contenant toutes les affaires (dont les colonnes MOA, mode_fi et CLE)
    -table "Anomalies_mode_fi": contenant les affaires avec anomalies ; deux colonnes (MOA, le mode_fi, CLE)
    -table correction "ficorr_lc": qui propose une correction pour chaque MOA, qui contient deux colonnes (MOA et le mode_fi correspondant)


    et j'ai deux soucis:
    1) j'ai créé une colonne "anomalies" dans la table ML et j'aimerais que cette colonne me renvoie la chaine "anomalie" lorsque la CLE est retrouvée dans la table anomalies
    j'ai réussi a créer la colonne "anomalies" mais pas le reste...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ML$anomalies=Anomalies_mode_fi$mode_fi[match(ML$CLE, Anomalies_mode_fi$CLE)]
    2) j'aimerais créer une deuxième colonne "correction" dans ML qui va me chercher le mode_fi dans la table correction (en fonction de MOA) seulement si la colonne "anomalies" est complétée

    j'ai tenté un code mais ça ne fonctionne pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for(i in 1:dim(ML)[1] )
    {
      if(is.na(ML$anomalies[i])==FALSE)
      {
      ML$correction[i]=ficorr_lc$mode_fi[match(ML$MOA, ficorr_lc$MOA)]
      }
    }

    Merci beaucoup pour votre aide!! :-)

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Merge selon condition
    Bonjour,

    Si j'ai bien compris votre question, vous pouvez vous amuser avec la fonction merge() :

    Soit les trois tables suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > ML
       MOA mode_fi CLE
    1    1       a  11
    2    2       a  12
    3    3       a  13
    4    4       a  14
    5    5       a  15
    6    6       b  16
    7    7       b  17
    8    8       b  18
    9    9       b  19
    10  10       b  20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > Anomalies_mode_fi
      MOA mode_fi CLE
    1   1       a  11
    2   2       a  12
    3   3       a  13
    4   8       b  18
    5   9       b  19
    6  10       b  20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > ficorr_lc
       MOA mode_fi
    1    1       c
    2    2       c
    3    3       c
    4    4       c
    5    5       c
    6    6       d
    7    7       d
    8    8       d
    9    9       d
    10  10       d
    Ajout de la variable anomalies dans la table ML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    > Anomalies_mode_fi$anomalies <- "anomality"
    > ML <- merge(ML, Anomalies_mode_fi[,c("CLE","anomalies")], by="CLE", all=TRUE)
    > ML
       CLE MOA mode_fi anomalies
    1   11   1       a anomality
    2   12   2       a anomality
    3   13   3       a anomality
    4   14   4       a      <NA>
    5   15   5       a      <NA>
    6   16   6       b      <NA>
    7   17   7       b      <NA>
    8   18   8       b anomality
    9   19   9       b anomality
    10  20  10       b anomality
    2) Sélection des observations dans la base ficorr_lc pour ne garder que les lignes correspondant à une anomalie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    > corr <- merge(ficorr_lc, Anomalies_mode_fi[,c("MOA","anomalies")], by="MOA", all=FALSE)[,-3]
    > names(corr) <- c("MOA","correction")
    > corr
      MOA correction
    1   1          c
    2   2          c
    3   3          c
    4   8          d
    5   9          d
    6  10          d
    3) Ajout de la variable correction dans la base ML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > ML <- merge(ML, corr, by="MOA", all=TRUE)
    > ML
       MOA CLE mode_fi anomalies correction
    1    1  11       a anomality          c
    2    2  12       a anomality          c
    3    3  13       a anomality          c
    4    4  14       a      <NA>       <NA>
    5    5  15       a      <NA>       <NA>
    6    6  16       b      <NA>       <NA>
    7    7  17       b      <NA>       <NA>
    8    8  18       b anomality          d
    9    9  19       b anomality          d
    10  10  20       b anomality          d
    Cordialement,

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Un grand merci!!!!

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

Discussions similaires

  1. [XL-2003] Boucler sur des lignes pour placer des valeurs selon certaines conditions
    Par antoine2933 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 31/08/2011, 16h00
  2. Réponses: 2
    Dernier message: 28/07/2010, 14h51
  3. [AC-2003] afficher une valeur selon une condition
    Par Souri84 dans le forum IHM
    Réponses: 3
    Dernier message: 19/11/2009, 11h10
  4. Réponses: 13
    Dernier message: 22/07/2009, 14h36
  5. Spliter une valeur selon des mots spécifiques
    Par witch dans le forum Langage
    Réponses: 15
    Dernier message: 03/10/2008, 11h10

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