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 :

Passer les lignes en colonnes avec des variables caractères


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Passer les lignes en colonnes avec des variables caractères
    Bonjour,

    J'ai une table qui se presente comme ça :

    Annee Var1 Var2
    2015 texteA --------
    2015 ------- texteB
    2016 texteC ---------
    2016 -------- texteD

    Et je voudrais obtenir la table suivante :

    2015 2016
    texteA TexteC
    texteB TexteD

    Je n'arrive pas à gérer la répétition des années quand je fais ma transpose.Dois-je revoir mon fichier de base (en mettant une seule ligne par année, mais comment faire car je suis sur du texte) ?

    Merci de votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 48
    Points : 63
    Points
    63
    Par défaut
    Bonjour Polmart,

    Tu dois faire une transformation des tes valeurs avant ta transposition car SAS n'autorise pas de table avec deux colonnes du même nom. Voilà ce que je te propose :

    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
     
    data test ;
    input Annee Var1 $ Var2 $ ; 
    cards; 
    2015 texteA .
    2015 . texteB
    2016 texteC .
    2016 . texteD
    ; 
    run; 
     
    data test2 (drop=var3); 
    	set test ; 
    	var3 = lag(var1) ; 
    	/* Pour chaque année je remplis les cases vides de var1 par les valeurs de var2 */
    	if missing(var1) then var1 =var3;
     
    	/* Suppression des doublons une fois les cases vide remplie */
    	if missing(var2) then delete ; 
    run; 
     
    proc transpose data=test2 out=test3(drop=_name_); 
    	var var1 var2; 
    	id annee ; 
    run;
    N'oubliez pas de cliquer sur résolu si votre problème est résolu .

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    En fait ça ne va pas car j'ai trop simplifié mon exemple. Ma table n'est pas aussi régulière.

    Année var1 var2
    2015 texte texte
    2015 texte-------
    2015 texte-------
    2016 texte texte
    2016 texte------
    2017 texte------
    2017 -------texte
    2017 texte-------
    2017 texte-------

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    +1

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 48
    Points : 63
    Points
    63
    Par défaut
    Je ne connais pas l'utilisation finale du fichier, mais dans ce cas je te conseille de transposer toutes les variables.

    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 Annee Var1 $ Var2 $ ; 
    cards; 
    2015 texte texte
    2015 texte -------
    2015 texte -------
    2016 texte texte
    2016 texte ------
    2017 texte ------
    2017 ------- texte
    2017 texte -------
    2017 texte
    ; 
    run; 
     
    proc transpose data=test out=test1; 
    	var annee var1 var2; 
    run;
    Les années deviendront donc la première ligne dans la table transposée. Et si tu dois utiliser cette table avec un autre outils que SAS, il ne te restera plus qu'à exporter sans les titres. Ta première ligne deviendra servira donc de nom de colonnes, comme ceci.

    Nom : Sans titre.png
Affichages : 647
Taille : 6,4 Ko
    N'oubliez pas de cliquer sur résolu si votre problème est résolu .

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ok merci car il n'y a pas de moyen simple de mettre tout le texte de 2015 dans une seule colonne, et pareil pour 2016 et 2017 ?

  7. #7
    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
    à force de parler de lignes et colonnes on a perdu la notion d'observations et de variables... On est ici dans un forum Excel ou SAS ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Une variable ne peut être assimilée à une colonne, ce sont deux choses différentes.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 48
    Points : 63
    Points
    63
    Par défaut
    Je ne suis pas sûr que ce que tu demandes sois réalisable facilement sans passer par des macros.

    Mais peux-tu en suivant ton dernier exemple nous mettre la table que tu cherches à avoir, s'il te plaît ?
    N'oubliez pas de cliquer sur résolu si votre problème est résolu .

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merci de ton aide j'ai trouvé une solution.

    J'ai mis un compteur sas dans chaque année. J'ai ensuite exporter les données dans des nouvelles tables en fonction du numéro du compteur, et ensuite merger toutes les tables crées (je n'ai plus qu'une seule ligne par année). Après le merge j'ai ensuite transposer.

  11. #11
    Membre actif
    Femme Profil pro
    Analyste en Intelligence d'Affaires (BI)
    Inscrit en
    Avril 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste en Intelligence d'Affaires (BI)
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 245
    Points : 290
    Points
    290
    Par défaut
    Bonjour Polmart,

    Contente que tu es trouvé une solution.

    Elle sera encore meilleure si tu la partageais afin que d'autres puissent s'en inspirer

    Merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2016, 21h05
  2. Réponses: 2
    Dernier message: 15/04/2016, 07h31
  3. Aligner les lignes de Jtable avec des Jcomponents
    Par Seuub dans le forum Composants
    Réponses: 1
    Dernier message: 14/01/2014, 11h20
  4. Correspondance ligne\Colonne avec des 'X'
    Par julie75 dans le forum Excel
    Réponses: 15
    Dernier message: 07/06/2007, 18h06
  5. Remplir les cellules Excel avec des variables VB
    Par rupeni dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/11/2005, 09h31

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