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

SAS Base Discussion :

importation en boucle


Sujet :

SAS Base

  1. #1
    Membre régulier
    importation en boucle
    Bonjour,

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     %macro import;
    %do i=2014 %to 2019;
    PROC IMPORT DATAFILE= "D:\BasedeW\DemandeSociale\&i\DS&i_TDB1_3F" 
    OUT= TDB_DS&i
    DBMS=XLSX
    REPLACE;
    GETNAMES=YES;
    RUN;
    %end;
    %mend;  
     
    %import;

    l'exécution génère l'erreur suivante :
    WARNING: Apparent symbolic reference I_TDB1_3F not resolved.
    ERROR: XLSX file does not exist -> D:\BasedeW\DemandeSociale\2019\DS&i_TDB1_3F.xlsx
    J'ai modifié le nom des fichiers 5 fois (2014 à 2019) et là ça marche :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     %macro import;
    %do i=2014 %to 2019;
    PROC IMPORT DATAFILE= "D:\BasedeW\DemandeSociale\&i\TDB_DS&i" 
    OUT= TDB_DS&i
    DBMS=XLSX
    REPLACE;
    GETNAMES=YES;
    RUN;
    %end;
    %mend; 
     
    %import;

    Une explication pour pouvoir résoudre ce problème ? Merci d'avance
    NB : j'utilise très rarement SAS

  2. #2
    Invité
    Invité(e)
    Bonjour,

    L'erreur indique qu'il cherche la valeur associée à la macro-variable I_TDB1_3F, qui n'existe pas ! Il faut remplacer &I_TDB1_3F par &I._TDB1_3F
    Le point indiquant la fin du nom de la macro-variable

  3. #3
    Membre régulier
    Citation Envoyé par Muse de Thamir Voir le message
    Bonjour,

    L'erreur indique qu'il cherche la valeur associée à la macro-variable I_TDB1_3F, qui n'existe pas ! Il faut remplacer &I_TDB1_3F par &I._TDB1_3F
    Le point indiquant la fin du nom de la macro-variable
    Merci beaucoup