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/04/2008, 01h24   #1
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 175
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 175
Points : 28
Points : 28
Par défaut transformation table SAS

j'ai une table SAS qui a cette allure :

A1 N1 2 3 4
A1 N2 5 6 7
A2 N1 8 9 10
A2 N3 11 12 13
A3 N1 14 15 16
A3 N4 17 18 19
A3 N5 20 21 22

et je voudrais en sortie cette table SAS :

A1 2 3 4 5 6 7 . . . . . . . . .
A2 8 9 10 . . . 11 12 13 . . . . . .
A3 14 15 16 . . . . . . 17 18 19 20 21 22
marti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 08h49   #2
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Bonjour,
Il faut tout d'abord que tu découpes ta table initale en plusieurs tables (T1,T2,T3) en fonction de ta deuxième colonne (N1,N2,N3) ... tu peux faire ça avec une proc SQL.
Du style:
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
DATA base;
input id$ v1$ v2 v3 v4;
cards;
A1 N1 2 3 4
A1 N2 5 6 7
A2 N1 8 9 10
A2 N3 11 12 13
A3 N1 14 15 16
A3 N4 17 18 19
A3 N5 20 21 22
;
RUN;
PROC SQL;
CREATE TABLE T1 AS
SELECT id,v2,v3,v4 FROM base WHERE v1='N1';
RUN;
PROC SQL;
CREATE TABLE T2 AS
SELECT id,v2 AS v5,v3 AS v6,v4 AS v7 FROM base WHERE v1='N2';
RUN;
PROC SQL;
CREATE TABLE T3 AS
SELECT id,v2 AS v8,v3 AS v9,v4 AS v10 FROM base WHERE v1='N3';
RUN;
Et ensuite tu regroupes tes données dans une étape DATA à l'aide d'un MERGE en considérant comme clé ta première variable (A1,A2,....).
Code :
1
2
3
4
5
 
DATA baseFinale;
MERGE T1 T2 T3;
BY id;
RUN;
Fafabzh
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 10h05   #3
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 175
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 175
Points : 28
Points : 28
merci
marti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 13h50   #4
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Si la réponse te convient n'oublie pas de cliquer sur Résolu.
Merci
Fafabzh
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 20h32   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 13
Points : 13
Points : 13
Bonjour,

Deux proc transpose doivent suffire. Voir l'exemple ci-dessous.

Sinon, une petite question : quel est l'intérêt d'avoir ces variables sous cette forme ? En effet, cela ne me semble pas une forme optimale car on crée des valeurs manquantes.

Cordialement,

Véronique

__________________________
Véronique Bourcier
www.sasreference.fr
Blog pour se former au SAS

Code :
1
2
3
4
5
6
7
8
9
proc transpose DATA=orig out=base2 (DROP=v1 _name_);
   BY id v1;
   var v2 v3 v4;
run;
 
proc transpose DATA=base2 out=base3 (DROP=_name_) prefix=new_;
   BY id ;
   var col1;
run;
v_bourcier 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 19h27.


 
 
 
 
Partenaires

Hébergement Web