IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Programme qui n'arrive pas a lire plusieurs tables dans un data


Sujet :

SAS Base

  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut Programme qui n'arrive pas a lire plusieurs tables dans un data
    Hello

    J'ai un souci dans ce code SAS (c'est un test effectué sur un programme que j'ai retrouvé dans mes archives).

    Quand j'ai

    " PROC MACHIN DATA=work.table1 work.table2 work.table3 ;

    ...

    run; "

    SAS me dit qu'il ne trouve pas les tables et qu'il manque des opérateurs de séparations entre les tables. J'ai donc mis des virgules et SAS ne trouve toujours pas les tables, à la place il met des erreurs et dit qu'il y a un operateur en trop.

    Avec ou sans virgule c'est la même chose

    Je vous joins le code général : (un lien pdf a titre informatif pour avoir les instruction pour le codage en SAS : http://myreader.toile-libre.org/inde...ramme_sas_test )

    Code SAS : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     /* importation des données */
     
    LIBNAME base1 'E:\année 2\année 2 validée\semestre 3\sas\interro';
    LIBNAME base2 'E:\année 2\année 2 validée\semestre 3\sas\interro';
    LIBNAME base3 'E:\année 2\année 2 validée\semestre 3\sas\interro';
     
    /* transfert des données dans la librairie work */
     
    data work.entrainement ;
    set  base1.entrainement ;
    run;
     
    data work.profil ;
    set base2.profil ;
    run; 
     
    data work.resultats ;
    set base3.resultats ;
    run; 
     
    /* Quelle est la longueur maximale sautée par les individus de plus 65kg qui ne sont suisses? */
     
    PROC MEANS DATA=work.resultats work.profil MAX;
     
    VAR longueur ;
     
    WHERE poids>=65 nationalite^="SU";
     
    run;
     
    /* Quelle est la répartition des sportifs par sexe et entraineur pour les sportif courant le 400m en
    moins de 50s? */
     
    PROC FREQ DATA=work.resultats work.profil work.entrainement;
     
    BY sexe entraineur;
     
    WHERE m400<50;
     
    run;
     
     
    /* Quelle est la répartition par tranches de gain et par sexe, pour les sportifs faisant moins de 15s
    au 110m haies? */
     
    proc FORMAT work.resultats work.profil work.entrainement;
     
    VALUE gain=$salaire. 
     
    1500-<1500 ="1500E<=Salaire<2000E" 
    2500-<3000 ="2000E<=Salaire<2500E"
    3000-<high ="3000E<=Salaire";
     
    run; 
     
    PROC FREQ DATA=work.resultats work.profil work.entrainement;
     
    FORMAT $salaire.;
     
    BY sexe gain;
     
    WHERE m110<15;
     
    run;

    Merci de me tuyauter

  2. #2
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    Tu n'as pas besoin de trois libname. Un seul suffit.

    Tu ne peux avoir qu'une seule table en entrée de tes procédures au lieu de trois.

    Je ferais une macro et j'appellerais la macro avec le nom de la table en paramètre à ta place.


    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    /* importation des données */
     
    LIBNAME base1 'E:\année 2\année 2 validée\semestre 3\sas\interro';
     
    /* transfert des données dans la librairie work */
     
    DATA work.entrainement ;
    SET  base1.entrainement ;
    run;
     
    DATA work.profil ;
    SET base1.profil ;
    run; 
     
    DATA work.resultats ;
    SET base1.resultats ;
    run; 
     
    %macro test(table=) ;
    /* Quelle est la longueur maximale sautée par les individus de plus 65kg qui ne sont suisses? */
     
    PROC MEANS DATA=work.&table MAX;
     
    VAR longueur ;
     
    WHERE poids>=65 nationalite^="SU";
     
    run;
     
    /* Quelle est la répartition des sportifs par sexe et entraineur pour les sportif courant le 400m en
    moins de 50s? */
     
    PROC FREQ DATA=work.&table;
     
    BY sexe entraineur;
     
    WHERE m400<50;
     
    run;
     
     
    /* Quelle est la répartition par tranches de gain et par sexe, pour les sportifs faisant moins de 15s
    au 110m haies? */
     
    proc FORMAT ;
     
    VALUE $ salaire. 
     
    1500-<1500 ="1500E<=Salaire<2000E" 
    2500-<3000 ="2000E<=Salaire<2500E"
    3000-<high ="3000E<=Salaire";
     
    run; 
     
    PROC FREQ DATA=work.&table;
    FORMAT gain $salaire.;
    BY sexe gain;
    WHERE m110<15;
    run;
    %mend test ;
     
    %test(table=resultats) ;
    %test(table=profil) ;
    %test(table=entrainement) ;

  3. #3
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,
    à mes connaissances, on ne peut pas utiliser plusieurs tables en entrée dans les proc MEANs, FREQ, PRINT ..., Donc il faudrait passer par un macro programme.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Orange] Probleme de pieces jointes qui n'arrivent pas
    Par hahlex dans le forum Internet
    Réponses: 6
    Dernier message: 30/06/2007, 18h32
  2. N'arrive pas a lire du mp3
    Par lio_on_jb_groove dans le forum SDL
    Réponses: 9
    Dernier message: 18/10/2006, 17h19
  3. Programme qui ne réalise pas le tri
    Par Premium dans le forum C
    Réponses: 3
    Dernier message: 02/08/2006, 14h14
  4. Programme qui ne fonctionne pas
    Par jipé95 dans le forum C
    Réponses: 7
    Dernier message: 26/04/2006, 19h08
  5. Réponses: 18
    Dernier message: 13/12/2005, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo