Annonce

Bienvenue sur le site support des ouvrages :
SAS - Introduction au décisionnel : méthode et maîtrise du langage
(1ère édition - épuisée)
SAS - Introduction pratique : du data management au reporting (2ème édition - épuisée)
SAS - Introduction au décisionnel : du data management au reporting (3ème édition - épuisée (hélas...))

la réponse à la question "mais où trouver la 3ème édition ?" est précisée ici


Retrouvez dans ce tiré à part, la préface écrite par Mouloud Dey, Directeur Business solutions et marchés émergents, SAS France,
l’introduction générale ainsi que le plan complet de l’ouvrage

#1 25-11-2015 07:28:12

SAS-SR
Administrateur
Lieu: Université d'Orléans
Date d'inscription: 01-09-2008
Site web

[archive] Optimisez moi tout ça !

Bonjour

je suis tombé par hasard sur cette page du site communities.sas.com :

https://communities.sas.com/t5/SAS-Comm … a-p/232944

En ce qui concerne les données, ne suivez pas le lien donné sur cette page pour les télécharger : si vous tentez d'exécuter ce programme, vous verrez que le PROC IMPORT ne fonctionne pas (vous obtenez un message assez étrange) :

Unable to sample external file, no data in first 5 records.
ERROR: Import unsuccessful.  See SAS Log for details.

il y a en fait un premier truc bizarre dans ces données... très certainement lié au fait que dans les données originales, il peut apparaître une virgule dans le nom des pays et que, par conséquent, le nombre de champs pour chaque enregistrement n'est pas constant (ce n'est qu'une hypothèse...).

exemple :
Bahamas, The
Virgin Islands, U.S.
Virgin Islands, British
...

Donc, soit le rédacteur de ce billet ne nous a pas tout dit, soit, il ne s'est rendu compte de rien...

Bref, voici des données sur lesquelles le programme fonctionne (et ça faisait de nombreuses années que je n'avais pas adapté des données pour qu'un programme fonctionne...c'est bien entendu le contraire qu'il faut faire : adapter son programme pour qu'il traite correctement les données !).

les données

et voici le programme proposé (les utilisateurs de SAS University comprennent ici que ce programme a été écrit pour cette version de SAS - il faut donc modifier simplement le chemin vers le fichier population by country.csv si vous disposez d'une version "traditionnelle" de SAS) :

Code:

proc import datafile="/folders/myfolders/my_data/population by country.csv" 
 out=pop_by_country dbms=csv;
run;

data population;
 set pop_by_country;
 rename _=Country;
run;

%MACRO cleanup(the_var);
 data population;
 set population;
 Year&the_var=input(&the_var, 10.5);
 drop &the_var;
 run;

%MEND;

%cleanup(_1980);
%cleanup(_1981);
%cleanup(_1982);
%cleanup(_1983);
%cleanup(_1984);
%cleanup(_1985);
%cleanup(_1986);
%cleanup(_1987);
%cleanup(_1988);
%cleanup(_1989);
%cleanup(_1990);
%cleanup(_1991);
%cleanup(_1992);
%cleanup(_1993);
%cleanup(_1994);
%cleanup(_1995);
%cleanup(_1996);
%cleanup(_1997);
%cleanup(_1998);
%cleanup(_1999);
%cleanup(_2000);
%cleanup(_2001);
%cleanup(_2002);
%cleanup(_2003);
%cleanup(_2004);
%cleanup(_2005);
%cleanup(_2006);
%cleanup(_2007);
%cleanup(_2008);
%cleanup(_2009);
%cleanup(_2010);

data Countries_Only;
 set population;
 where country not in ("North America", "Central & South America", 
 "Antarctica", "Europe", "Eurasia", "Middle East", "Africa", "Asia & Oceania", 
 "World");
run;

proc univariate data=Countries_Only all;
 var year_1980;
run;

proc univariate data=Countries_Only all;
 var year_2010;
run;

hum..... ce programme demande l'exécution de 33 étapes DATA (1 au départ, 31 exécutions du macro programme CLEANUP et l'étape DATA qui permet de construire la table COUNTRIES_ONLY). C'est un peu beaucoup... (et c'est même largement TROP...) surtout qu'une seule étape data permet de construire la table qui sera finalement utilisée...

Pour la semaine prochaine, rédigez cette unique étape DATA...

Les plus sportifs d'entre vous pourront aussi supprimer l'étape PROC IMPORT... tout en conservant une unique étape DATA... et vous verrez qu'on peut faire des programmes très compliqués alors qu'un programme très simple suffit...

amusez vous bien

Ce sujet est maintenant archivé - seuls les utilisateurs inscrits de www.sas-sr.com peuvent consulter l'intégralité du sujet et les réponses aux questions posées.
pour vous identifier, suivez ce lien
pour vous inscrire, suivez ce lien

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr
Flux RSS