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 :

Mise en forme complexe d'une table SAS


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Mise en forme complexe d'une table SAS
    Bonjour,
    Je suis actuellement face à un gros problème pour mettre en forme une table de données sous SAS .
    Les variables de ma table sont définies de la façon suivante : Nomdelavariable_nomdelavisite_nomdela version.
    Noms de variable : peuvent contenir des « _ » et les noms sont de longueurs variables
    Nom de la visite : défini par : « _ E » puis un numéro qui défini la visite (si la visite est répétée, on aura en plus un appendice qui définira l’occurrence de la visite :_Enumvisite_numérodel’occurrence (ex : E17_1, E17_2, E17_3….)
    Nom de la version : défini par : « _C » puis un numéro qui change suivant la visite et la version du formulaire.
    J’ai donc par exemple des variables comme ceci :
    VARA_E2_C10
    VARA_E2_C11
    VARA_E2_C12
    VARA_E3_C41
    VARA_E3_C42
    VARA_E4_C81
    ….

    Certaines variables ne sont pas présentes dans certaine version elles seront donc absentes. J’aurai donc par exemple :
    VARB_E2_C10
    VARB_E2_C12
    VARB_E3_C41
    VARB_E4_C81
    ….
    Les informations pour une variables ne peuvent être saisie que dans une seule version donc par exemple si VARB_E2_C10 n’est pas nul alors VARB_E2_C12 est nul.

    Pour compliquer les choses, il y a des variables qui sont répétées et qui sont défini de la même façon que précédemment avec un appendice en plus qui défini l’occurrence de la répétition. On aura par exemple :

    VARC_E2_C10
    VARC_E2_C12
    VARC_E2_C10_1
    VARC_E2_C12_2
    VARC_E3_C41_1
    VARC_E4_C81_1
    VARC_E4_C81_2

    En plus de ces variables définis de cette façon j’ai :
    - Des variables qui contiennent l’information commune à toutes les visites et qui seront définies de la façon suivante :
    VARD_E2
    VARD_E3
    VARD_E4
    - Des variables qui contiennent l’information comme a tous les formulaires et qui seront définies seulement par le nom de la variable.


    Mais voici une partie de la liste de mes variables :
    ….
    StartDate_E3 Num. 8 MMDDYY10.
    StartDate_E4 Num. 8 MMDDYY10.
    StartDate_E5 Num. 8 MMDDYY10.
    StartDate_E6 Num. 8 MMDDYY10.
    StartDate_E7 Num. 8 MMDDYY10.
    StartDate_E8 Num. 8 MMDDYY10.
    StartDate_E9 Num. 8 MMDDYY10.
    StartDate_E10 Num. 8 MMDDYY10.
    StartDate_E11 Num. 8 MMDDYY10.
    StartDate_E12 Num. 8 MMDDYY10.
    StartDate_E13 Num. 8 MMDDYY10.
    StartDate_E14 Num. 8 MMDDYY10.
    StartDate_E15 Num. 8 MMDDYY10.
    StartDate_E16 Num. 8 MMDDYY10.
    StartDate_E17_1 Num. 8 MMDDYY10.
    StartDate_E17_2 Num. 8 MMDDYY10.
    StartDate_E17_3 Num. 8 MMDDYY10.
    StartDate_E17_4 Num. 8 MMDDYY10.
    StartDate_E17_5 Num. 8 MMDDYY10.
    StartDate_E17_6 Num. 8 MMDDYY10.
    StartDate_E17_7 Num. 8 MMDDYY10.
    StartDate_E17_8 Num. 8 MMDDYY10.

    StudySubjectID Texte 7
    SubjectStatus Texte 9

    VersionName_E10_C277 Texte 1
    VersionName_E10_C279 Texte 1
    VersionName_E11_C302 Texte 1
    VersionName_E11_C304 Texte 1
    VersionName_E12_C345 Texte 1
    VersionName_E12_C347 Texte 1
    VersionName_E13_C380 Texte 1
    VersionName_E13_C382 Texte 1
    VersionName_E14_C415 Texte 1
    VersionName_E14_C417 Texte 1
    VersionName_E15_C442 Texte 1
    VersionName_E15_C444 Texte 1
    VersionName_E16_C487 Texte 1
    VersionName_E16_C489 Texte 1
    VersionName_E17_1_C522 Texte 1
    VersionName_E17_1_C524 Texte 1
    VersionName_E17_1_C525 Texte 1
    VersionName_E17_2_C522 Texte 1
    VersionName_E17_2_C524 Texte 1
    VersionName_E17_2_C525 Texte 1
    VersionName_E17_3_C522 Texte 1
    VersionName_E17_3_C524 Texte 1
    VersionName_E17_3_C525 Texte 1
    VersionName_E17_4_C522 Texte 1
    VersionName_E17_4_C524 Texte 1
    VersionName_E17_4_C525 Texte 1
    VersionName_E17_5_C522 Texte 1
    VersionName_E17_5_C524 Texte 1
    VersionName_E17_6_C522 Texte 1
    VersionName_E17_6_C524 Texte 1
    VersionName_E17_7_C522 Texte 1
    VersionName_E17_7_C524 Texte 1
    VersionName_E17_8_C522 Texte 1
    VersionName_E3_C34 Texte 1
    VersionName_E3_C36 Texte 1
    VersionName_E3_C37 Texte 1
    VersionName_E4_C57 Texte 1
    VersionName_E4_C59 Texte 1
    VersionName_E4_C60 Texte 1
    VersionName_E4_C61 Texte 1
    VersionName_E5_C92 Texte 1
    VersionName_E5_C94 Texte 1
    VersionName_E5_C95 Texte 1
    VersionName_E6_C127 Texte 1
    VersionName_E6_C129 Texte 1
    VersionName_E6_C130 Texte 1
    VersionName_E7_C162 Texte 1
    VersionName_E7_C164 Texte 1
    VersionName_E7_C165 Texte 1
    VersionName_E8_C197 Texte 1
    VersionName_E8_C199 Texte 1
    VersionName_E8_C200 Texte 1
    VersionName_E9_C232 Texte 1
    VersionName_E9_C234 Texte 1
    VersionName_E9_C235 Texte 1
    num_rando_E17_1_C525 Texte 5
    num_rando_E17_2_C525 Texte 5
    num_rando_E3_C37 Texte 5
    num_rando_E4_C60 Texte 5
    num_rando_E5_C95 Texte 5
    num_rando_E6_C130 Texte 5
    num_rando_E7_C165 Texte 5
    num_rando_E8_C200 Texte 5
    num_rando_E9_C235 Texte 5
    ...
    Voilà une table un peu complexe...
    Et ce que je veux :
    - Pour chaque visite je veux regrouper les différentes versions des variables car si une variable est remplie dans une version, elle n’est pas remplie dans une autre version.
    - Avoir une ligne pour chaque visite

    Voici un exemple de ce que je veux avec la partie de la table que je vous ai montré précédemment :
    StudySubjectID SubjectStatus Nom de la visite StartDate VersionName num_rando
    A B E3 01/02/2001
    A B E4 02/02/2011
    A B E5 03/02/2011
    A B E6 04/02/2011
    A B E7 05/02/2011
    A B E8 06/02/2011
    A B E9 07/02/2011
    A B E10 08/02/2011
    A B E11 09/02/2011
    A B E12 10/02/2011
    A B E13 11/02/2011
    A B E14 12/02/2011
    A B E15 13/02/2011
    A B E16 14/02/2011
    A B E17 15/02/2011
    A B E17_1 16/02/2011
    A B E17_2 17/02/2011
    A B E17_3 18/02/2011
    A B E17_4 19/02/2011
    A B E17_5 20/02/2011
    A B E17_6 21/02/2011
    A B E17_7 22/02/2011
    A B E17_8 23/02/2011


    Voilà, je en sais pas comment débuter ce programme alors si vous aviez quelques idées ou quelques conseils sur la marche à suivre, je suis plus que preneuse !!! j'ai besoin de vos yeux d'experts...
    Merci d’avance !!!!

  2. #2
    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,

    Peux-tu proposer un micro modèle de ta table ?
    De la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data nom_table;
    input var1----varn;
    datalines;
    obs1 ...obsn
    ;
    Personnelement je suis un peux confuse dans la description de ta table originale (ton resultat souhaité est clair).
    Vite fait....je vois des scan ou substr à l'horizon.
    A bientôt.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Précision
    Salut,
    Voici un micro modèle de ma table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DATA study;
    INPUT StudySubjectID $	SubjectStatus $	EventStatus_E3 $   weight_E3_C34 weight_E3_C35 weight_E3_C36... ;
    DATALINES;
    1M01 available DES . 2,5 .
    1M02 available DES 1.2 . .
    1M03 available DES . . 3.1
    1M04 available DES . 5 .
    ;
    RUN;
    a +...

  4. #4
    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
    Salut
    Voici un bout de programme que j'ai bricolé cela devrait t'inspirer pour trouver une solution.
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    DATA study;
    INPUT 
    StudySubjectID $ 
    SubjectStatus $ 
    EventStatus_E3 $ 
    weight_E3_C34
    weight_E3_C35 
    weight_E3_C36 
    StartDate_E3 $
    StartDate_E4 $
    StartDate_E5 $
    VersionName_E10_C277 $
    VersionName_E10_C279 $
    VersionName_E11_C302 $
    num_rando_E17_1_C525 
    num_rando_E3_C37  
    num_rando_E4_C60 
     
    ;
    DATALINES;
    1M01 available DES . 2.5 . 01/02/2001 01/02/2002 01/02/2003 C C C 12345 12345 12345 
    1M02 available DES 1.2 . . 02/02/2011 02/02/2012 02/02/2013 C C C 12345 12345 12345 
    1M03 available DES . . 3.1 03/02/2011 03/02/2012 03/02/2013 C C C 12345 12345 12345 
    1M04 available DES . 5 .   04/02/2011 04/02/2012 04/02/2013 C C C 12345 12345 12345 
    ;
    RUN;
     
    proc transpose
    data=study out=test;
    by StudySubjectID  SubjectStatus;
    var EventStatus_E3 
    weight_E3_C34
    weight_E3_C35 
    weight_E3_C36 
    StartDate_E3 
    StartDate_E4 
    StartDate_E5 
    VersionName_E10_C277 
    VersionName_E10_C279 
    VersionName_E11_C302 
    num_rando_E17_1_C525 
    num_rando_E3_C37  
    num_rando_E4_C60;
    run;
    data test1;
    set  test;
    NOM=tranwrd(upcase(_NAME_),"NUM_RANDO","NUMRANDO");
     
    nom_visite=scan(NOM,2,'_');
    if substr(scan(NOM,3,'_'),1,1)ne "C" then do;
    	occurence=scan(NOM,3,'_');
    end;
    else do;
    nom_version=scan(NOM,3,'_');
    end;
    run;
    Bon courage.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Merci
    Super merci beaucoup!!!
    Je vais essayer ça!

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

Discussions similaires

  1. [WD14] Mise en forme automatique d'une table
    Par benji42 dans le forum WinDev
    Réponses: 2
    Dernier message: 10/07/2012, 13h35
  2. Module de mise à jour des champs d'une table
    Par kikaillo dans le forum Access
    Réponses: 14
    Dernier message: 18/04/2006, 09h42
  3. Réponses: 6
    Dernier message: 07/02/2006, 14h44
  4. Vue non mise à jour après modification d'une table
    Par cybernet35 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 13h54
  5. Mise en forme monétaire d'une valeur
    Par RobertDeNiroZ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/08/2005, 09h55

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