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 :

Transposer une variable colonne en variable ligne


Sujet :

SAS Base

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut Transposer une variable colonne en variable ligne
    Bonjour,

    j'ai un tableau croisé du type Ligne * colonne

    les variables que j'ai correspondent aux colonnes.
    J'aimerais récupérer des variables correspondant aux lignes

    Exemple:
    en ligne:
    jouer vous au Rugby, au foot, au volley (3 modalités)
    en colonne:
    très souvent, souvent, parfois, jamais. (4 modalités)

    Les variables que j'ai sont donc au nombre de 4 (colonnes)
    En faite, je voudrai les variables lignes au nombre de 3.

    Est ce que je peux passer des colonnes aux lignes via une macro sas en rentrant comme paramètre le nombre de colonne et de ligne...

    Merci

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Tu peux faire cela je pense en deux étapes avec deux proc transpose, l'une pour ramener les colonnes en lignes puis tes questions à 3 modalités en colonne.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    datametric écrit:
    Tu peux faire cela je pense en deux étapes avec deux proc transpose, l'une pour ramener les colonnes en lignes puis tes questions à 3 modalités en colonne.
    En faite, je ne vois pas très bien comment tu enchaine tes 2 proc transpose.
    A priori si je le fais, je retombe à la case départ ...

    Voici pour être plus clair voici mon fichier de départ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    data sport2;
       input 
    Quest  S_1  S_2  S_3  S_4  P_1  P_2  P_3  P_4  J_1  J_2  J_3  J_4;
       datalines;
     1     1    .    .    .    .    1    .    .    .    .    1    .
     2     .    1    .    .    .    1    .    .    .    .    1    .
     3     1    .    1    .    .    1    .    .    .    .    1    .
     4     1    1    1    1    .    1    .    .    .    .    1    .
     5     1    .    .    .    .    1    .    .    .    .    1    .
     6     1    .    .    .    .    1    .    .    .    .    1    .
     7     1    .    .    .    .    1    .    .    .    .    1    .
    ;
     run;
    On s'intéresse à la pratique du sport
    S signifie souvent
    P parfois
    J jamais
    Quest numéro du questionnaire
    _1 -- _4 correspondent au Rugby, Volley, Foot, Tennis

    De plus, il peut y avoir des erreurs de remplissage du style oui(1) pour à la fois souvent et parfois par exemple

    En sortie, j'aimerais récupérer 4 variables : Rugby, Volley, Foot, Tennis + la variable Quest of course

    J'espère avoir été plus clair.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 372
    Points
    372
    Par défaut
    Salut,

    Si ton problème est de récupérer la fréquence de la pratique sportive dans les variables volley, etc, tu peux utiliser 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
     
     
     data transforme;
     set sport2;
     length Rugby  Volley  Foot  Tennis $10.;
     array SPORT(4)   Rugby  Volley  Foot  Tennis ;
     array SOUVENT(4) S_1-S_4;
     array PARFOIS(4) P_1-P_4;
     array JAMAIS(4)  J_1-J_4 ;
     
     do i=1 to 4;
    	if SOUVENT(i) then SPORT(i)="Souvent";
    	else if PARFOIS(i) then SPORT(i)="Parfois";
    	else if JAMAIS(i) then SPORT(i)="Jamais";
     end;
    keep Quest Rugby  Volley  Foot  Tennis ;
    run;
    Telles que les conditions if sont écrites, pour un même sport, l'information "souvent" prévaut sur "parfois" qui prévaut sur "jamais".

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut
    Merci sasadm

    c'est exactement cela que je voulais faire.

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

Discussions similaires

  1. Lien Target avec une cell colonne fixe mais ligne variable
    Par LimsWolf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2012, 16h27
  2. Transformer une matrice colonne en matrice ligne
    Par Leanaa dans le forum Bibliothèques tierces
    Réponses: 19
    Dernier message: 05/07/2012, 17h11
  3. Transposer une table (colonne -> ligne)
    Par twixi dans le forum SQL
    Réponses: 8
    Dernier message: 16/06/2011, 18h04
  4. Réponses: 6
    Dernier message: 03/07/2009, 09h32
  5. Réponses: 2
    Dernier message: 27/09/2006, 19h41

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