h1

Arrondir ses chiffres avant d’appliquer un format

mars 31, 2008

Gérer l’affichage des pourcentages et des décimales avec SAS : tel est la thématique de cet article. Les formats permettent de présenter les données d’une manière un peu plus élégante et parlante. On peut ainsi n’afficher que les deux derniers chiffres après la virgule, ajouter un symbole pourcentage. Mais les formats vont couper le chiffre plutôt que l’arrondir si PICTURE avec l’option ROUND n’est pas utilisé.

1. Arrondir un nombre avec la fonction ROUND : la fonction ROUND permet d’arrondir les nombres soit à la décimale près soit à l’entier (ou son multiple) près. La fonction dispose de deux paramètres : la variable d’origine et la précision de l’arrondi.

Arrondir à deux chiffres après la virgule :

x1= round (orig,0.01);

Arrondir tous les 10 :

x1= round (orig,10);

Ainsi dans le premier exemple, si ORIG=17.016, l’arrondi au centième (X1) est égal à 17.02. Dans le second cas, l’arrondi (X2) = 20.

2. Créer un PICTURE format : l’instruction PICTURE est très pratique pour afficher les formats dans un rapport.

Dans l’exemple qui suit, le nombre aura au maximum trois chiffres pour la partie entière et deux chiffres pour la partie décimale. Si la partie entière n’a qu’un chiffre, seul celui-ci apparaîtra. Remplacez le 0 des dizaines par un 9 et le chiffre zéro précédera le pourcentage s’il est inférieur à 10 %.

proc format;
picture pct
low-high=‘009.99 %’;
run;

Cette syntaxe dispose de l’option ROUND. C’est très pratique pour à la fois arrondir un chiffre, apposer un symbole % et avoir un zéro pour les chiffres après la virgule quand le chiffre n’est pas entre 1 et 9.

proc format;
picture pct_rd (round)
low-high=‘009.99 %’;
run;

3. Créer un texte avec un pourcentage arrondi à deux décimales : le code qui suit utilise 4 valeurs pour illustrer la différence entre la fonction ROUND, le FORMAT.

orig     fmt     rnd   solution1 solution2

21.200  21.20 %  21.20   21.20 %   21.20 %
6.333   6.33 %   6.33    6.33 %    6.33 %
84.367  84.36 % 84.37   84.37 %   84.37 %
13.362  13.36 %  13.36   13.36 %   13.36 %

data rnd_fmt;
set rnd_fmt;
fmt       = put(orig,pct.);
rnd       = round(orig,0.01);
solution1 = put(round(orig,0.01),pct.);
solution2 = put(orig,pct_rd.);
run;

Annexe :

data rnd_fmt;
input orig;
datalines;
21.200
6.333
84.367
13.362
;
run;

2 commentaires

  1. Bonjour,
    qq remarques en mon nom propre

    exemple 1, j’obtiens
    ORIG x1 x2
    17.013 17.01 20

    pas 17.02 et c’est normal
    ———————————
    Dans l’exemple 2

    le format pct_rd n’est pas défini.
    solution2 = put(orig,pct_rd.);
    ————————–
    ‘009.99 %’ pose pb en V9
    Cela est mieux ‘009.99 %’
    Cela empêche de faire un coupé/collé dans SAS pour tester
    ———————–
    J’obtiens cela
    *
    Obs orig fmt rnd solution1 solution2

    1 21.200 21.20 % 21.20 21.20 % 21.20 %
    2 6.333 6.33 % 6.33 6.33 % 6.33 %
    3 84.367 84.37 % 84.37 84.37 % 84.37 %
    4 13.362 13.36 % 13.36 13.36 % 13.36 %
    ;
    Pas : 1 3.36

    Je ne vois pas d’ou sortirais ce blanc après le 1 avant le 3 (d’ailleurs il y a 2 blancs dans votre exemple)
    ———————————
    Je connais un peu SAS mais je suis surpris, aurais-je mal lu votre article ?

    Bonne chance

    PS : pas bien du tout d’imposer un mail – celui-ci est un mail bidon, vous avez mes coordonnées par ailleurs


  2. Bonjour,

    Je viens d’apporter des corrections :
    – Arrondi : il s’agit bien un nombre maintenant avec un chiffre décimal qui est arrondi à l’unité supérieure. 17.013 est devenu 17.016.

    – Nom de format : j’ai corrigé le nom donné au second format (celui utilisant l’option ROUND) pour rester en adéquation avec la partie 3. Il s’appelle maintenant PCT_RD

    – Espaces : en effet il ne doit pas y avoir d’espaces entre le 1 et le 3. C’était une simple erreur dans la mise en page de l’article. Je dois en effet faire pas mal de retouches dans les sorties pour qu’elles entre dans une page.

    – Guillemets : en copiant les guillemets sous WordPress, ceux-ci changent légèrement. Du coup, quand on copie un code avec des guillemets sous SAS, ce ne sont plus celles reconnues par le logiciel. J’ai connaissance du problème mais n’est trouvé aucune solution pour le moment pour y parer.

    – Email : ce site est développé sous WordPress. Je n’ai aucun contrôle sur les champs obligatoires ou nom que les lecteurs doivent remplir. C’est une bonne idée de mettre une adresse bidon pour les personnes ne souhaitant pas avoir de réponse directe à leur commentaire.

    Merci pour tous les commentaires, la qualité de l’article en est améliorée.

    Cordialement,

    Véronique



Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :