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 08/12/2011, 16h28   #1
Invité de passage
 
Inscription : février 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 4
Points : 0
Points : 0
Par défaut Data avec multiligne par individu

Bonjour,
j'ai une data sas de la forme

ID service dos1 dos2 dos3
HT1 serv1 2 3 .
HT1 serv2 1 2 3
HT1 serv3 10 . 1
HT2 serv1 8 . 11
HT2 serv2 . 8 10
HT2 serv3 5 2 8
HT2 serv4 9 2 6
HT2 serv5 4 3 20
HT3 serv1 3 . 4
HT3 serv3 1 2 3

donc plusieurs lignes par individus.
j'aimerai n'avoir qu'une ligne par individu et une colonne pour chaque service associé à une dose. Pour être plus clair, j'aimerai arrivé à quelque chose comme cela:

ID |serv1_dos1| serv1_dos2 |serv1_dos3 |serv2_dos1 |serv2_dos2 |serv2_dos3 |serv3_dos1 |serv3_dos2 |serv3_dos3 |……..
HT1 |2 |3 |. |1 |2 |3 |10 |. |1 |……..
HT2 |8 |. |11 |. |8 |10 |5 |2 |8 |……..
HT3 |3 |. |4 |. |. |. |1 |2 |3 |……..

J'arrive à construire mes variables serv_dos en colonne sur Sas mais je n'arrive pas à affecter les doses correspondante à chaque service.
Je me suis dis que quelqu'un aurait peut-être une idée de code sous sas.

Merci d'avance pour votre aide,

Vanne27
vanne27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 17h47   #2
Membre éclairé
 
Homme
statisticien
Inscription : mai 2011
Messages : 213
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : statisticien
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2011
Messages : 213
Points : 319
Points : 319
Par une double proc transpose ?

Il y a peut-être plus simple, néanmoins ce code marche

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
 
 
DATA a;
id='HT1';service='serv1';dos1=2;dos2=3;dos3=.;output;
id='HT1';service='serv2';dos1=1;dos2=2;dos3=3;output;
id='HT1';service='serv3';dos1=10;dos2=.;dos3=1;output;
id='HT2';service='serv1';dos1=8;dos2=.;dos3=11;output;
id='HT2';service='serv2';dos1=.;dos2=8;dos3=10;output;
id='HT2';service='serv3';dos1=5;dos2=2;dos3=8;output;
id='HT2';service='serv4';dos1=9;dos2=2;dos3=6;output;
id='HT2';service='serv5';dos1=4;dos2=3;dos3=20;output;
id='HT3';service='serv1';dos1=3;dos2=.;dos3=4;output;
id='HT3';service='serv3';dos1=1;dos2=2;dos3=3;output;
run;
 
proc sort DATA=a; BY id service;run;
 
proc transpose DATA=a out=b;
BY id service;
run;
 
DATA b; SET b;_nomvar_=compress(service!!'_'!!_name_);DROP _name_ service;run;
 
proc transpose DATA=b out=c(DROP=_name_);
BY id;
id _nomvar_;
run;
jerome_pdv2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 18h16   #3
Invité de passage
 
Inscription : février 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 4
Points : 0
Points : 0
merci ça marche!!! j'aurais pas pensé à transposer deux fois la base.
vanne27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h03.


 
 
 
 
Partenaires

Hébergement Web