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 et attribution nom/label variable


Sujet :

SAS Base

  1. #1
    Membre averti
    Homme Profil pro
    Doctorant
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Doctorant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Par défaut Transposer une variable et attribution nom/label variable
    Bonjour,

    Je dispose d'un jeu de données contenant une variable identifiant (ID), une variable numérique (VAR1) que je souhaite transposer, et une variable catégorielle (VAR2) que je souhaite utiliser pour nommer les variables transposées.
    Le table est sous la forme suivante :
    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
     
    ID     VAR1       VAR2
    1       10.1        Vélo
    1        8.2        Vélo
    1        5.0        Rolleur
    1        8.6        Tracteur
    2       40.6        Rolleur
    2       17.5        4x4
    2       79.6        Avion
    3      100.8        Vélo
    3       58.2        Rolleur
    3       47.8        Rolleur
    3       97.3       Bateau
    3        5.6        Metro
    3       47.6        Moto
    et je souhaiterais (dans l'idéal) transposer la VAR1 de façon à obtenir autant de colonnes que de catégories dans la VAR2 (il y en a au total 85), que le nom des variables transposées soient les observations de la VAR2 (exemple: si VAR2= Vélo, le nom de la nouvelle variable sera Vélo), et que pour chaque ID, on calcule la somme des valeurs de la VAR1 pour chaque catégorie de la VAR2.
    Par exemple, pour l'ID 1, la Cat1 apparait deux fois. Ces catégories ont pour valeur 10.1 et 8.2 dans la VAR1. Une fois transposé, on aurait donc 10.1+8.2=18.3 dans la variable Cat1 pour l'ID1.
    A noter que les participants n'ont pas nécessairement un observation pour l'ensemble des catégories. Par exemple, l'ID 1 n'a pas d'observations pour les catégories 3, 4, 5, 7 et 8.
    .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ID     Vélo     Rolleur    Bateau     4x4      Avion      Tracteur     Métro     Moto
    1      18.3        5.0                                       8.6
    2                 40.6                17.5      79.6
    3     100.8      106.0     97.3                                         5.6      47.6
    Dites moi si ma demande nécessite davantage d'explications.

    Belle journée

    Florian

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut
    Bonjour,

    Une proposition :

    • Table 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
    14
    15
    16
    17
    18
    data test;
      input ID VAR1 VAR2 $10.;
      cards;
    1   10.1 Vélo
    1    8.2 Vélo
    1    5.0 Rolleur
    1    8.6 Tracteur
    2   40.6 Rolleur
    2   17.5 4x4
    2   79.6 Avion
    3  100.8 Vélo
    3   58.2 Rolleur
    3   47.8 Rolleur
    3   97.3 Bateau
    3    5.6 Metro
    3   47.6 Moto
    ;
    run;
    • Calcul de la somme des valeurs de la VAR1 pour chaque catégorie de la VAR2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    proc sort data=test;
      by id var2;
    run;
     
    proc univariate data=test noprint;
      by id var2;
      var var1;
      output out=result sum=var1;
    run;
    • Transposition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    proc transpose data=result out=result(drop=_name_ _label_);
      var var1;
      by id;
      id var2;
    run;
     
    data result;
      set result;
      rename V_lo=Velo;
      label V_lo="Vélo";
      label _4x4="4x4";
    run;
    • Résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ID    Rolleur    Tracteur     Vélo     4x4    Avion    Bateau    Metro    Moto
     
     1       5.0        8.6       18.3      .        .        .        .        .
     2      40.6         .          .     17.5     79.6       .        .        .
     3     106.0         .       100.8      .        .      97.3      5.6     47.6
    Cordialement,

Discussions similaires

  1. Transposer une variable colonne en variable ligne
    Par AlexFred dans le forum SAS Base
    Réponses: 4
    Dernier message: 05/10/2010, 18h59
  2. Transposer une variable ?
    Par jgx342 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/09/2008, 16h40
  3. Réponses: 2
    Dernier message: 06/11/2007, 13h23
  4. Réponses: 3
    Dernier message: 18/10/2007, 18h33
  5. [XSLT] Attribut dont le nom est stocké dans une variable ?
    Par Xfennec dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/03/2006, 11h20

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