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 de nouvelles valeurs à une colonne selon conditions


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Par défaut Affectation de nouvelles valeurs à une colonne selon conditions
    Bonjour,


    je pars d'une base de données (ML) , voici un exemple de la base:
    Mode_fi Anomalies Correction
    Public anomality Privé
    FP NA NA
    Privé anomality Public
    privé NA NA
    privé anomality mixte
    privé anomality public

    La colonne "correction" est complétée lorsque la colonne "anomalies" est complétée.

    Et je souhaiterais, affecter les valeurs de la colonne "correction" dans la colonne "mode_fi" seulement lorsque la colonne anomalies est égale à "anomality" ( dans le cas contraire: garder la valeur de base dans "mode_fi" lorsque la colonne anomalies est différente de "anomality")


    Merci beaucoup pour votre aide!!

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Équivalent de SAS update
    Bonjour,

    Je suppose que c'est la suite de votre précédent message. Vous pouvez mettre à jour les données d'une table avec celles d'une autre, équivalent du update de SAS :

    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
    > ML <- read.csv("D:/temp/ML.txt")
    > Anomalies_mode_fi <- read.csv("D:/temp/Anomalies_mode_fi.txt")
    > ficorr_lc <- read.csv("D:/temp/ficorr_lc.txt")
    > 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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > corr <- merge(ficorr_lc, Anomalies_mode_fi[,c("MOA","anomalies")], by="MOA", all=FALSE)[,-3]
    > corr
      MOA mode_fi
    1   1       c
    2   2       c
    3   3       c
    4   8       d
    5   9       d
    6  10       d
    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
    > library(data.table)
    > Cols <- "mode_fi"
    > iCols <- paste0("i.", Cols)
    > ML <- setDT(ML)[corr, (Cols) := mget(iCols), on="MOA"][]
    > ML
        CLE MOA mode_fi anomalies
     1:  11   1       c anomality
     2:  12   2       c anomality
     3:  13   3       c anomality
     4:  14   4       a        NA
     5:  15   5       a        NA
     6:  16   6       b        NA
     7:  17   7       b        NA
     8:  18   8       d anomality
     9:  19   9       d anomality
    10:  20  10       d anomality
    (source)

    Cordialement,
    Fichiers attachés Fichiers attachés

  3. #3
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Peut-être que j'ai mal compris votre besoin, mais il me semble qu'il s'agit d'une besoin assez "basique" en manipulation de données avec R...
    Quelques pistes que je vous conseille de creuser :

    • Si vos données sont au format "dataframe" dans R (par exemple appelé "mesdonnees"), vous pouvez accéder à une colonne avec : mesdonnees$Mode_fi.
    • Pour tester des conditions, voir la structure : "if...else" (ou directement la fonction ifelse() si votre besoin est simple).
    • Pour tester une égalité entre deux valeurs en R, utiliser l'opérateur == .

    Et sinon, des tutoriels sur les basiques de programmation avec R sont disponibles ici : https://r.developpez.com/cours/.

    N'hésitez pas à revenir ici poster le code que vous essayez de faire et les éventuels problèmes rencontrés.
    Bonne continuation


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  4. #4
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Affectation de nouvelles valeurs à une colonne selon conditions
    Bonjour,

    Le fonctionnement est un peu différent avec les chaînes de caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    > df <- data.frame(Mode_fi=c("Public","FP","Privé","Privé","Privé","Privé"),
    +                  Anomalies=c("anomality",NA,"anomality",NA,"anomality","anomality"),
    +                  Correction=c("Privé",NA,"Public",NA,"Mixte","Public"))
    > df
      Mode_fi Anomalies Correction
    1  Public anomality      Privé
    2      FP      <NA>       <NA>
    3   Privé anomality     Public
    4   Privé      <NA>       <NA>
    5   Privé anomality      Mixte
    6   Privé anomality     Public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > df$Mode_fi <- ifelse(df$Anomalies=="anomality",df$Correction,df$Mode_fi)
    > df
      Mode_fi Anomalies Correction
    1       2 anomality      Privé
    2      NA      <NA>       <NA>
    3       3 anomality     Public
    4      NA      <NA>       <NA>
    5       1 anomality      Mixte
    6       3 anomality     Public
    Il ne faut pas que la variable Anomalies soit NA et il faut forcer la conversion en caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > df <- data.frame(Mode_fi=c("Public","FP","Privé","Privé","Privé","Privé"),
    +                  Anomalies=c("anomality","","anomality","","anomality","anomality"),
    +                  Correction=c("Privé",NA,"Public",NA,"Mixte","Public"))
    > 
    > df$Mode_fi <- ifelse(df$Anomalies=="anomality",as.character(df$Correction),as.character(df$Mode_fi))
    > df
      Mode_fi Anomalies Correction
    1   Privé anomality      Privé
    2      FP                 <NA>
    3  Public anomality     Public
    4   Privé                 <NA>
    5   Mixte anomality      Mixte
    6  Public anomality     Public
    (source)

    Cordialement,

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/05/2016, 15h32
  2. [AC-2010] Mettre à jour une colonne selon condition
    Par JOKER6 dans le forum Access
    Réponses: 4
    Dernier message: 22/02/2016, 15h40
  3. [2008] Changement de valeur d'une colonne selon condition
    Par jubourbon dans le forum SSIS
    Réponses: 3
    Dernier message: 08/03/2012, 18h14
  4. [XL-2003] couleur d'une cellule d'une colonne selon conditions
    Par bartsho dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2011, 12h44
  5. Réponses: 9
    Dernier message: 29/07/2011, 17h25

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