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

Macro Discussion :

Extraction de valeurs extremum


Sujet :

Macro

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Extraction de valeurs extremum
    Bonjour à vous !!
    J'aimerais créer une macro SAS qui me permettrais d'extraire à partir d'une table, une table des "n" valeurs les plus grandes et les "n" valeurs les plus petites pour une variable donnée.

    Je débute sous SAS donc j'ai d'abords eu le réflexe de créer un prog SAS et après de faire ma macro mais je n'y arrive pas.
    Mon raisonnement est que je commence par faire un tri "descending" de ma variable et de prendre les "n" premières valeurs et les "n" dernières à partir d'un tableIN vers un tableOUT afin d'avoir une macro du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %macro extract (tableIN, n, tableOUT);
    DATA &tableOUT;
    SET &tableIN;
    ...
    Pouvez-vous m'aider ?
    Cordialement

  2. #2
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 37
    Points : 206
    Points
    206
    Par défaut macro SAS pour une extraction de valeurs extremum
    Bonsoir,
    Essayer ce programme si cela répond à votre problématique.

    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
     
    data test(drop=i);
    do i=1 to 100;
    x=i; 
    output; 
    end;
    run;  /*Moi j'ai crée une table déja triée, mais vous il suffit de faire un proc sort sur la variable en question*/                                                                                                                                                                                                                                             
     
    %macro exemple (tabin=,n=,tabout=); 
            data &tabout.;                                                                                                                  
                    do i=1 to &n.,nb_obs-&n.+1 to nb_obs ;
            set &tabin. point=i nobs=nb_obs;                                                                                                
            output;                                                                                                                         
            end;                                                                                                                            
            stop;                                                                                                                           
            run;                                                                                                                            
    %mend;                                                                                                                                  
     
    %exemple (tabin=test,n=5,tabout=test2);                                                                                                 
     
    proc print data=test2;                                                                                                                  
    run;
    Cordialement

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut merci pour la réponse
    Bonjour, je vous remercie! au vu de la macro j'ai quelques doutes mais je vais essayer de la faire tourner.
    J'ai également trié ma variable et je suis parti sur sur une boucle où si _N_ >=n alors je la supprime, je vais creuser ça.
    En tous cas merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Ce code, sans tri, peut également répondre à ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /* Jeux de donneés */
    data normal;
    do n=1 to 20;
    Val=10*rannor(53124)+50;
    output;
    end;
    run;  
     
    ODS select extremeobs;
    proc Univariate data=normal nextrobs=5 ;
    id n ;
    var val;
    run;
    Cdt Ward

  5. #5
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    JE PROPOSE CECI

    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
    data test;do x=1 to 100; 
    output; 
    end;
    run;
     
     
    %macro Extraire(table=,n=5,var=);
    	proc sql noprint;
    	SELECT COUNT(*) into: N1 FROM &table;
    	quit;
    	%let N2=%sysevalf(&N1-&n+1);
    	proc sort data=&table  out=__test;
    	by &var;
    	run;
    	data resultat;
    	set __test;
    	if _n_ le &n or _n_ ge &N2;
    	run;
    	proc sql noprint;
    	drop table __test;
    	quit;
    %mend;
     
     
    %Extraire(table=test,var=x); /*Ici par défaut n=5*/
    %Extraire(table=test,n=20,var=x); /*Ici n=20*/
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

Discussions similaires

  1. Extraction de valeurs d une iteration
    Par mfontan dans le forum MATLAB
    Réponses: 16
    Dernier message: 18/01/2008, 16h13
  2. Extraction de valeur (stringstream)
    Par jmelyn dans le forum SL & STL
    Réponses: 11
    Dernier message: 12/12/2007, 11h18
  3. Extraction de valeurs - matrice des distances
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 06/04/2007, 17h14
  4. Extraction des valeurs hexa d'un champ char
    Par Krispi dans le forum Fortran
    Réponses: 3
    Dernier message: 21/11/2005, 11h10
  5. [Tableaux] Extraction de valeur dans un tableau
    Par pirouette_07 dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 17h54

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