24.11.2014 Views

Pratique de Sas Windows 9.2... Volume 1 - Ined

Pratique de Sas Windows 9.2... Volume 1 - Ined

Pratique de Sas Windows 9.2... Volume 1 - Ined

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

7.4.4 Et les fichiers dbase ?<br />

Un petit mot en ce qui concerne les import/export dbf, car l’Insee met à disposition <strong>de</strong>s chercheurs les données<br />

<strong>de</strong> ses enquêtes (RP, EE etc) à ce format sur son site. En général, il y a trois fichiers dbf : celui <strong>de</strong>s données,<br />

celui <strong>de</strong>s labels <strong>de</strong> variables et enfin celui <strong>de</strong>s labels <strong>de</strong> modalités. Or, la construction d’une table sas<br />

documentée se heurtait au fait que l’encodage interne aux fichiers n’était pas win-1252 alias WLATIN1 ou<br />

l’iso-8859-1. Dans cette nouvelle version <strong>de</strong> <strong>Sas</strong>, la question <strong>de</strong> l’encodage (UTF8 etc) a été bien mieux prise<br />

en compte et le programmeur qui se heurtait à du texte français dégradé au niveau <strong>de</strong>s lettres accentuées sera<br />

très content <strong>de</strong> sauter la lour<strong>de</strong> étape <strong>de</strong> correction.<br />

libname autre "D:\ined\patrim03";<br />

proc import dbms=dbf<br />

file="d:\ined\patrim03\individu04.dbf"<br />

out=individu04 replace;<br />

dbencoding=pcoem850 ;<br />

get<strong>de</strong>l=yes;<br />

run;<br />

proc import dbms=dbf<br />

file="d:\ined\patrim03\varlist_individu04.dbf"<br />

out=varlist replace;<br />

dbencoding=pcoem850 ;<br />

get<strong>de</strong>l=yes;<br />

run;<br />

proc import dbms=dbf<br />

file="d:\ined\patrim03\varmod_individu04.dbf"<br />

out=varmod replace;<br />

dbencoding=pcoem850 ;<br />

get<strong>de</strong>l=yes;<br />

run;<br />

<strong>Sas</strong> signale cependant qu’il faut, par rapport à dbase, faire attention aux données manquantes numériques et au séparateur décimal.<br />

Dans le config <strong>de</strong> <strong>Sas</strong>, on pourra mettre un paramètre en variable d’environnement<br />

-set DBFMISCH valeur => 999 ou NULLS avec <strong>de</strong>s zéros binaires ou BLANKS avec <strong>de</strong>s blancs.<br />

option CTRYDECIMALSEPARATOR= "," ;<br />

peut être utile en cas <strong>de</strong> problème avec le signe décimal virgule.<br />

L’instruction get<strong>de</strong>l=yes; a pour effet <strong>de</strong> purger les enregistrements <strong>de</strong> la base dbf qui ne sont pas encore<br />

éliminés mais seulement marqués comme tel.<br />

7.4.5 Et le tout simple csv à la française ?<br />

• Le dbms=csv est simplissime.<br />

libname a "d:\tabsas\";<br />

proc export data=a.classe dbms=csv outfile="d:\tabsas\csvexport.csv";<br />

<strong>de</strong>limiter=";"; run;<br />

Mieux :<br />

proc export data=a.classe dbms=tab outfile="d:\tabsas\txtexport.txt"<br />

replace; run;<br />

• Il existe cependant <strong>de</strong>s alternatives réglant peut-être mieux les rapports avec les préréglages d’Excel.<br />

ods csv file='d:\tabsas\csvtest.csv' options(doc='Help' <strong>de</strong>limiter=";");<br />

proc print data=sashelp.class(obs=1);run;<br />

ods csv close;<br />

Les options <strong>de</strong>limiter=' ;', thousands_separator='' et <strong>de</strong>cimal _separator=',' permettent bien <strong>de</strong>s<br />

choses sous réserve <strong>de</strong> tester préalablement un petit exemple en fonction <strong>de</strong> votre contexte <strong>Windows</strong>.<br />

Le fait d’utiliser doc=help vous permet <strong>de</strong> sortir la documentation <strong>de</strong> cette possibilité sur la log/journal.<br />

• Et la vieille solution valable aussi si on n’a pas le module sas access to pc file formats.<br />

data _null_; set a.classe;<br />

file "d:\tabsas\csvpgm.csv" dsd dlm=';';<br />

put (_all_) (:);<br />

run;<br />

INED Wielki 103

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!