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 :

modification d'une valeur sous condition


Sujet :

R

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Points : 20
    Points
    20
    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 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 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
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Points : 20
    Points
    20
    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 confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    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, 06h50
  2. Réponses: 0
    Dernier message: 16/05/2013, 16h26
  3. Réponses: 10
    Dernier message: 07/07/2012, 17h11
  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, 09h35
  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, 10h39

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