Arrondi variable

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Arrondi variable

Messagepar Serge Rapenne » 03 Oct 2017, 15:28

Bonjour,

j'ai une question qui semble trivial, mais je sèche.
j'ai un data.frame avec un grand nombre de colonne et je voudrais arrondir les valeurs des colonnes mais toutes les colonnes ne doivent pas avoir le même arrondi. Les nombres de décimal pour chaque colonne est dans un vecteur de la même taille que le nombre de colonne.
par ex

Code : Tout sélectionner

dta<-head(mtcars[,c("drat","wt","qsec")])
nb_digits<-c(1,2,0) #je voudrais arrondir drat= à 1 décimale, wt à 2 et qsec à 0

Je peux faire ça avec une boucle, mais y a t'il une solution sans.

Serge

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: Arrondi variable

Messagepar Gabriel Terraz » 03 Oct 2017, 21:11

Salut,
Avec mapply peut-être :

Code : Tout sélectionner

mapply(round, dta, nb_digits)

Bastien Gamboa
Messages : 151
Enregistré le : 13 Jan 2011, 21:31

Re: Arrondi variable

Messagepar Bastien Gamboa » 04 Oct 2017, 07:22

Bonjour,

Une autre piste avec signif(). Même si l'aide de la fonction ne le dit pas, 'digits' accèpte plusieurs valeurs. Cependant, chaque 'digits' correspond à une ligne et non une colonne comme tu le souhaites...

Code : Tout sélectionner

signif(head(mtcars[,c("drat","wt","qsec")]), digits=nb_digits)

HTH
Bastien

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Arrondi variable

Messagepar Serge Rapenne » 04 Oct 2017, 07:31

Merci Gabriel,

ça fonctionne nickel, j'avais pensé à mapply mais je n'avais pas testé. Comme dta était un df, j'ai supposé que ça n'allait pas fonctionner sans penser que nb_digits serait recyclé.

Serge


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité