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 :

Rechercher une valeur dans une table SAS, et puis une colonne dans laquelle se trouve cette valeur


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Rechercher une valeur dans une table SAS, et puis une colonne dans laquelle se trouve cette valeur


    Bonjour, J'espère avoir de l'aide car je suis bloquée depuis quelques heures!
    pour plus de clarté, la table SAS que j'appellerai table A est insérée par le lien URL ci dessus.

    J'ai une table SAS qui contient plusieurs colonnes, la seule colonne qui m'interesse est la colonne c ou se trouve la varible code. je dois bien sûr ignorer toutes les lignes vides avant.
    je vais avoir plusieurs tables comme ceci, mais la varible code ne se trouvera pas toujours à la colonne c sur les autres tables.
    Une chose est sûre, dés que la colonne contient la variable code, il y a la valeur (2) inscrite avant les codes.

    Ce que je voudrais : extraire une sous table SAS à partir de la table SAS A, qui contient uniquement la colonne c ou se trouvent les codes. Vu que j'aurai pleins de tables comme celle insérérée à ce message et comme la colonne des codes change entre les tables (pas toujours la colonne c),

    L'idée est : rechercher dans la table SAS A la valeur (2), dés qu'on a cette valeur, prélever le numéro de la colonne ou se trouve cette valeur, pour donc avoir la liste de tous les codes contenus dans cette colonne.

    Merci
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonsoir,

    pour moi le plus simple est de faire une proc transpose, de sorte à avoir
    une première colonne avec le numero de la ligne initiale,
    une deuxième colonne avec le nom de la variable de la ligne
    et une troisième colonne avec la modalité correspondant à la variable situé dans la deuxième colonne.

    Tu cherche (2) dans la troisième variable, dès que tu as trouvé cette modalité dans la troisième colonne, tu récupère la modalité de la deuxième colonne associée qui sera le nom de ta variable.
    Sur les observations suivantes tu fais un output a chaque fois que tu rencontre une modalité non vide dans la troisième ET la modalité que tu as récupéré précédemment dans la deuxième colonne.

    Tu obtiens une nouvelle table que tu redresse par une transpose inverse à la transpose précédente et tu as ta table.

    Pour la proc transpose tu peux consulter ce papier par exemple

    http://support.sas.com/resources/pap...9/060-2009.pdf

    Alors il y a une limitation, il faut que toutes tes variables de ta table initiales soient de même type (caractère ou numérique) mais cela semble être ton cas.

    Bon courage.

  3. #3
    Membre régulier
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Septembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Septembre 2013
    Messages : 27
    Points : 76
    Points
    76
    Par défaut
    Tu peux aussi via deux étapes data avec des arrays :
    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
    data t1;
    	format a b c d e $30.;
    	input a b c d e;
    	cards;
    test . code . .
    . . . . .
    . . de . .
    (1) . (2) . .
    truc . valCode . .
    coucou . great 2 3
    ;
    run;
     
    data t2(where=(col ne .));
    	set t1;
    	array find{*} _CHARACTER_;
    	do i=lbound(find) to hbound(find);
    		if find(i)="(2)" then col=i;
    	end;drop i;
    	retain col;
    	if col ne . then call symput('numCol',col);
    run;
     
    option firstobs=2;
    data t3;
    	set t2;
    	array find{*} _CHARACTER_;
    	code=find(&numCol.);
    run;
    option firstobs=1;

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Points : 13
    Points
    13
    Par défaut merci bcp
    merci Emralle et Jerome

    Jerome, je te remercie mais je n'ai pas bien compris ta réponse

    merci Emralle pour le détail du code, super

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

Discussions similaires

  1. Déplacer une colonne dans la table
    Par Invité dans le forum Administration
    Réponses: 2
    Dernier message: 15/01/2009, 13h01
  2. chercher les éléments d'une table B qui ne sont pas dans la table A
    Par Cupidon dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/01/2008, 13h40
  3. Réponses: 3
    Dernier message: 06/11/2006, 08h14
  4. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29
  5. Données d'une table deviennent colonne dans autre table?
    Par christophe1245 dans le forum Access
    Réponses: 8
    Dernier message: 19/12/2005, 22h01

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