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 :

Mofifier l'affichage des valeurs / concatener des valeurs


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Physicienne Médicale
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Physicienne Médicale

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Par défaut Mofifier l'affichage des valeurs / concatener des valeurs
    Bonjour,

    Question 1 : J'ai réalisé des calculs et j'obtiens des valeurs avec de nombreux digits (cf un exemple réduit ci-dessous).
    Je souhaiterai réaliser un tableau final avec 2 chiffres après la virgule, mais
    - R supprime les chiffres non significatifs (les derniers zéros après la virgule) lors de l'utilisation de ROUND ou SIGNIF, en particulier lors de la de la création de la chaine de character abc(cf ma formule dans le code).
    - Y a t-il un moyen simple de transformer toutes mes valeurs numériques avec 2 chiffres VISIBLES après la virgule ? ex pour le dernier chiffre de mon data : 6.00 au lieu de 6


    Question 2 : J'ai concaténé mes valeurs a, b et c pour les regrouper dans la colonne abc.
    Je ne comprend pas pourquoi j'obtiens un espace avant la dernière parenthèse ")" de cette dernière colonne ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a  <-  rnorm(10,mean = 5,sd = 1.5)
    b  <-  rnorm(10,mean = 5,sd = 1.5)
    c  <-  rnorm(10,mean = 5,sd = 1.5)
    data <- data.frame (a,b,c)
    # création d'une colonne reprenant les valeurs a, b et c :
    data$abc <- with(tab, paste( round(a,2) , paste (round(b,2) , paste ( round(c,2),")") , sep="-") , sep=" (" ))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > data
              a        b        c               abc
    1  4.807771 3.570551 3.222482 4.81 (3.57-3.22 )
    2  4.224456 6.233421 2.976063 4.22 (6.23-2.98 )
    3  4.586793 3.097874 5.122324  4.59 (3.1-5.12 )
    4  4.099050 1.839390 3.859338  4.1 (1.84-3.86 )
    5  4.017786 5.237511 5.187231 4.02 (5.24-5.19 )
    6  5.085407 1.843445 6.540434 5.09 (1.84-6.54 )
    7  4.728394 6.258981 5.153004 4.73 (6.26-5.15 )
    8  4.681560 5.311245 1.616501 4.68 (5.31-1.62 )
    9  5.660385 3.075752 4.608560 5.66 (3.08-4.61 )
    10 4.331482 5.628172 6.001948    4.33 (5.63-6 )
    En vous remerciant pour toutes les pistes que vous me proposerez.
    Cordialement,
    Matou

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour une solution avec le tidyverse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    library(tidyverse)
     
    data <- tibble(a=rnorm(10,mean = 5,sd = 1.5),
                   b  = rnorm(10,mean = 5,sd = 1.5),
                   c  = rnorm(10,mean = 5,sd = 1.5)) %>% # creation du dataframe
      mutate_all(round,digit = 2) %>% # 2 chiffres significatifs pour toutes les colonnes
       mutate(abc = str_c(format(a,digit = 2),"(",
                                    format(b,2)," ",format(c,2),")"))# ajout col abc, utilisation de format pour garder le 0 final

  3. #3
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Par défaut
    Pour contrôler le nombre de digits d'affichage et la concaténation des valeurs afin d'obtenir une chaîne de caractères, quoi de plus simple que la fonction sprintf de base, wrapper de la fonction de même nom en C et donc même syntaxe ?

  4. #4
    Membre averti
    Femme Profil pro
    Physicienne Médicale
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Physicienne Médicale

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Par défaut
    Bonjour,

    Merci à Faubry et Xavier-Pierre !

    Vos deux réponses m'ont permis d'avancer et de résoudre mon problème.
    Finalement, j'ai utilisé un mix des idées pour créer ma colonne abc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab1 <- tibble ( abc = str_c(sprintf("%.2f", data$a) ,"(", sprintf("%.2f", data$b) ,"-", sprintf("%.2f", data$c) ,")" )  )
    ça fonctionne.

    Bonne journée !!
    Matou

  5. #5
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data$abc <- sprintf( "%.2f (%.2f-%.2f)", data$a, data$b, data$c)
    donne exactement ce que tu veux. Alors pourquoi utiliser des packages supplémentaires (de plus str_c et paste0, ou paste avec sep="", font la même chose) et faire appel 3 fois à sprintf ?

  6. #6
    Membre averti
    Femme Profil pro
    Physicienne Médicale
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Physicienne Médicale

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Par défaut
    Ok, merci Faubry pour cet éclairage !
    C'est plus simple effectivement, maintenant je saurai :-)

    C'est vrai que je me suis noyée dans les différentes possibilités, mais toute réflexion fait progresser. Encore merci à tous pour votre aide.

    Bonne journée
    Cordialement,
    Matou

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

Discussions similaires

  1. Affichage des valeurs disponibles dans une zone de liste déroulante
    Par azerty dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/06/2007, 12h29
  2. Pas d'affichage des valeurs nulles avec un COUNT
    Par phoenixz22 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 30/05/2007, 18h39
  3. [SQL] Affichage des valeurs nulles dans un Count
    Par at_first dans le forum Access
    Réponses: 4
    Dernier message: 06/03/2007, 11h07
  4. Réponses: 3
    Dernier message: 05/03/2007, 12h54
  5. Affichage des valeurs des variables avec tkprof
    Par hkhan13 dans le forum Oracle
    Réponses: 2
    Dernier message: 04/07/2006, 11h59

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