1. #1
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 16
    Points : 13
    Points
    13

    Par défaut modification d'une valeur sous condition

    Bonjour,
    je galère pour modifier sous condition une valeur d'une cellule d'un dataframe.
    J'ai importé un très gros fichier TXT avec des adresses postales mais malheureusement les départements 01à 09 sont numérotés de 1 à 9 dans le fichier source.
    Je souhaiterai remettre au bon format. pour ce faire après l'import, je créé 4 colonnes (NCODEPOS et NDEPET qui reprennent les valeur de la colonne CODPOS et DEPET mais en format char et 2 colonnes qui me calculent la longueur de la chaine de chaque colonne).
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    basecli <- mutate(basecli,
    NCODEPOS= as.character(CODPOS),
    NDEPET = as.character(DEPET),
    NBCARCODEPOS = str_length(CODPOS),
    NBCARDEPET = str_length(DEPET))
    A partir de là je veux modifier la valeur de la colonne NCODEPOS en ajoutant un 0 à la valeur lorsque la valeur de NBCARCODEPOS = 4 (exemple si NCODEPOS = 4560 , je veux la modifier à 04560).

    J'ai testé avec un if mais ça ne fonctionne pas, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    library(readr)
    library(dplyr)
    library(dtplyr)
    library(stringr)
     
    basecli<- mutate(basecli, CODEPOS = ifelse((str_length(NBCARCODEPOS)==4 , str_c ("0", NBCARCODEPOS), NCODEPOS))
    Je n'ai pas de message d'erreur ni d'insulte mais je n'ai pas ma nouvelle colonne...

    Pouvez-vous m'aider ? Comment je peux faire ? Ou si vous avez une autre solution.... merci.

    PS : j'adapterais le code pour le département.

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

    Par défaut Modification d'une valeur sous condition

    Bonjour,

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > test <- data.frame(codepos=c("1111","22222"))
    > test$codepos <- as.character(test$codepos)
    > test
      codepos
    1    1111
    2   22222
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > library(stringr) 
    > test$codepos[str_length(test$codepos)==4] <- str_c("0",test$codepos[str_length(test$codepos)==4])
    > test
      codepos
    1   01111
    2   22222
    ou avec la fonction ifelse() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > library(stringr)
    > test$codepos <- ifelse(str_length(test$codepos)==4,str_c("0",test$codepos),test$codepos)
    > test
      codepos
    1   01111
    2   22222
    NB : Il faut vérifier que la variable est bien de type caractères.


    Cordialement,

  3. #3
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 16
    Points : 13
    Points
    13

    Par défaut TOP !

    J'ai utilisé la condition la fonction Ifelse et ça marche super ! J'ai un peu honte car c'était facile...

    L'autre possibilité ne fonctionne pas sur ma machine. Je pense que c'est lié au package. Je fais une mise à jour et je teste

    MERCI encore !

  4. #4
    Membre habitué
    Inscrit en
    février 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 63
    Points : 125
    Points
    125

    Par défaut

    Bonjour,

    une autre possibilité avec sprintf (dans les packages de base) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test <- data.frame(codepos=c("1111","22222"), stringsAsFactors = FALSE)
    test$codepos <- sprintf("%05d", as.integer(test$codepos))
    cdlt

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

Discussions similaires

  1. Remplacer le contenu d'une cellule par une valeur sous condition
    Par zoocoral dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/11/2015, 07h50
  2. Réponses: 0
    Dernier message: 16/05/2013, 17h26
  3. Réponses: 10
    Dernier message: 07/07/2012, 18h11
  4. [AC-2007] Etats ACCESS, affichage d'une valeur sous condition
    Par Maryy dans le forum IHM
    Réponses: 3
    Dernier message: 13/01/2012, 10h35
  5. [AC-2003] Récup d'une valeur sous condition
    Par louzz dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/11/2011, 11h39

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