Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2011, 11h28   #1
Invité de passage
 
Roselyne Vallo
Inscription : janvier 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Roselyne Vallo

Informations forums :
Inscription : janvier 2010
Messages : 3
Points : 3
Points : 3
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 !!!!
rvallo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 16h32   #2
Membre régulier
 
Femme Mariam
Statisticienne-Consultante BI
Inscription : avril 2008
Messages : 127
Détails du profil
Informations personnelles :
Nom : Femme Mariam
Localisation : Canada

Informations professionnelles :
Activité : Statisticienne-Consultante BI
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 127
Points : 96
Points : 96
Bonjour,

Peux-tu proposer un micro modèle de ta table ?
De la forme:
Code :
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.
MDsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 16h56   #3
Invité de passage
 
Roselyne Vallo
Inscription : janvier 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Roselyne Vallo

Informations forums :
Inscription : janvier 2010
Messages : 3
Points : 3
Points : 3
Par défaut Précision

Salut,
Voici un micro modèle de ma table:

Code :
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 +...
rvallo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 18h58   #4
Membre régulier
 
Femme Mariam
Statisticienne-Consultante BI
Inscription : avril 2008
Messages : 127
Détails du profil
Informations personnelles :
Nom : Femme Mariam
Localisation : Canada

Informations professionnelles :
Activité : Statisticienne-Consultante BI
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 127
Points : 96
Points : 96
Salut
Voici un bout de programme que j'ai bricolé cela devrait t'inspirer pour trouver une solution.
Code :
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.
MDsas est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/12/2011, 14h27   #5
Invité de passage
 
Roselyne Vallo
Inscription : janvier 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Roselyne Vallo

Informations forums :
Inscription : janvier 2010
Messages : 3
Points : 3
Points : 3
Par défaut Merci

Super merci beaucoup!!!
Je vais essayer ça!
rvallo est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h20.


 
 
 
 
Partenaires

Hébergement Web