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

  1. #1
    Futur Membre du Club
    Exportation des données SAS sur STATA en conservant les formats
    Bonjour, je viens ici car après plusieurs heures de recherche, je ne trouve pas solution à mon problème.
    Je souhaite exporter depuis SAS des données sur STATA en conservant les formats que j'ai créés et attachés à ma base. Voici une extraction de mon code (je vous épargne tous mes formats):
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    libname donnees "Répertoire\Données";
    libname formats "Répertoire\Formats";
    option fmtsearch=(formats);
     
    proc format library=formats;
    value $nationalite
    "1" = "Française"
    "2" = "CEE"
    "3" = "Hors CEE";
    quit;
     
    data donnees.base;
    set base;
    format nationalite $nationalite.;
    run;
     
    PROC EXPORT DATA=donnees.base
    OUTFILE="Répertoire\Données\base.dta"
    DBMS=DTA REPLACE;
    fmtlib=formats;
    RUN;


    Les formats s'affichent bien sur ma table SAS donnees.base mais par contre aucun format n'est conservé dans mon nouveau fichier STATA base.dta malgré l'option fmtlib...
    Il doit y avoir quelque chose qui m'échappe..
    Si vous pouvez me décoincer, j'en serai ravi pour m'éviter de refaire tous mes formats sur STATA !

  2. #2
    Futur Membre du Club
    Pour ceux qui aurait le même problème, j'ai finalement trouvé la solution:
    1) Les variables dont je veux appliquer un format avant exportation sur stata doivent être numérique.
    2) Les noms de formats ne doivent pas excéder 8 caractères (doit correspondre à la taille maximum sur stata).

    Voila mon code corrigé qui fonctionne, où je retrouve cette fois les formats sur stata (j'ai d'abord dû convertir mes variables caractères en numériques):

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    libname donnees "Répertoire\Données";
    libname formats "Répertoire\Formats";
    option fmtsearch=(formats);
     
    proc format library=formats;
    value nat /*je change le nom de mon format afin qu'il n'excède plus 8 caractères*/
    1 = "Française"
    2 = "CEE"
    3 = "Hors CEE";
    quit;
     
    data donnees.base;
    set base;
    format nationalite nat.; /*nationalite est ici numérique*/
    run;
     
    PROC EXPORT DATA=donnees.base
    OUTFILE="Répertoire\Données\base.dta"
    DBMS=DTA REPLACE;
    fmtlib=formats.formats; /*j'avais oublié de préciser la librairie*/
    RUN;