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 :

utilisation des noms des variables dans les conditions


Sujet :

SAS Base

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut utilisation des noms des variables dans les conditions
    Bonjour

    Je travaille actuellement sous SAS et j'ai un petit soucis...
    En effet, je voudrai pouvoir mettre une condition sur les noms de mes variables, et non sur les modalités, existe-t-il qqch qui permettrait de le faire ?
    Ma table comporte en ligne des villes, en colonne des villes disposant d'un supermarché, les modalités étant les distances séparant les villes. Mon but est de calculer, pour chacune des villes en ligne, la ville la plus proche possédant un supermarché dans le département...

    Merci d'avance

    Ankhaline

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Une solution possible (un peu rigide J'espère qu'il n'y pas trop de supermachés dans ton dpt..)

    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
    data TEST;
    input name$ VAR1 VAR2 VAR3 best12.;
    cards;
    VILLE 215 326 55
    VILLE2 22 554 326
    VILLE3 225 668 452
    VILLE4 441 55 3
    ;
    run;
     
    data TEST2;
    	set TEST;
    	TEST=min(VAR1, VAR2, VAR3);
    	if min(VAR1, VAR2, VAR3)=VAR1
    		then TEST2=vname( VAR1); 
    		else if min(VAR1, VAR2, VAR3)=VAR2
    			then TEST2=vname( VAR2);
    			else TEST2=vname( VAR3);
    run;

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En fait, j'ai plus de 5000 variables, mais je peux peut-être essayer d'automatiser cela...
    Merci pour votre rapidité

    Mélina

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    salut,

    l'erreur initiale est de stocker en colonne les infos alors que en ligne cela aurait été plus simple d'avoir le résultat.

    une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    data WORK.GROS;
       array VARS VAR1-VAR5000;
       do j = 1 to 10;
          do i = 1 to 5000;
             VARS[i] = int(ranuni(100) * 100) + 1;
          end;
          output;
       end;
    run;
    Avec un array tu mets les colonnes et tu boucles dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    data WORK.LE_MIN;
       length varMin $ 32;
       set WORK.GROS;          
       array VARS VAR1-VAR5000;
       min = VARS[1];
       varMin = vname(VARS[1]);
       do i = 1 to 5000;
          if min ^= min(min, VARS[i]) then do;
             min = min(min, VARS[i]);
             varMin = vname(VARS[i]);
          end;
       end;
    run;
    xav

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    ok merci je vais essayer cela.
    J'avais essayé la proc transpose mais cela ne change rien, puisque j'ai toujours des villes en lignes et en colonnes. J'avais aussi essayé de mettre mes supermarchés et mes villes en ligne (d'abord Supermarché1 et toutes les villes etc.) mais cela aurait donné 15 milliards de lignes, donc trop...
    Bon WE

    Ankhaline

Discussions similaires

  1. Attribuer des noms de variables dans une boucle
    Par sanguisorbe dans le forum Langage
    Réponses: 8
    Dernier message: 13/06/2014, 15h42
  2. [MySQL] Des noms de variables dans une boucle
    Par nicolas2603 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/08/2009, 14h51
  3. Réponses: 4
    Dernier message: 12/04/2009, 14h40
  4. Réponses: 4
    Dernier message: 10/04/2008, 22h23
  5. Réponses: 28
    Dernier message: 09/01/2007, 16h30

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