Le forum du Master ESA économétrie et statistique appliquée - Université d'Orléans

Vous n'êtes pas identifié.

Annonce

Vous êtes sur le forum du master ESA !

Le site du master ESA - description de la formation, notes de cours, contacts... vient de déménager !!!

Venez visiter notre nouveau site : www.master-esa.fr

#1 08-04-2010 08:02:35

kakame
membre extérieur
Date d'inscription: 08-04-2010
Messages: 3

repetition dans ma table sas

Bonjour,

Voilà, j'ai des individus et leur voiture, avec une ligne pour chaque voiture, par exemple :

christophe velsatis
christophe smart
julie twingo
etienne cadillac
etienne 2cv

Je voudrais transformer tout cela pour ne plus avoir qu'une ligne par individu :

christophe velsatis smart
julie twingo
etienne cadillac 2cv

Pourriez vous m'aider ? Merci !!!

Hors ligne

 

#2 08-04-2010 09:35:50

20syl
Member
Lieu: Orléans
Date d'inscription: 05-03-2007
Messages: 117

Re: repetition dans ma table sas

kakame a écrit:

Bonjour,

Voilà, j'ai des individus et leur voiture, avec une ligne pour chaque voiture, par exemple :

christophe velsatis
christophe smart
julie twingo
etienne cadillac
etienne 2cv

Je voudrais transformer tout cela pour ne plus avoir qu'une ligne par individu :

christophe velsatis smart
julie twingo
etienne cadillac 2cv

Pourriez vous m'aider ? Merci !!!

Bonjour,

Comme çà vite fait je te dirais de faire une proc transpose by prénom et var nom de la voiture... à tester...
J'ai aps trop le temps d'approfondir la question désolé :S

Pensez à trier votre base par prénom wink

Dernière modification par 20syl (08-04-2010 09:42:30)

Hors ligne

 

#3 08-04-2010 10:19:54

kakame
membre extérieur
Date d'inscription: 08-04-2010
Messages: 3

Re: repetition dans ma table sas

au fait j'ai fais une jointure entre deux tables: clients et voiture...client peut avoir plusieurs voitures,d'où le fait qu'il apparaisse 2 fois(christophe par exemple)...:s

Hors ligne

 

#4 08-04-2010 13:26:31

Benoit
Member
Date d'inscription: 07-09-2009
Messages: 16

Re: repetition dans ma table sas

Bonjour, si les données de votre exemple sont dans une table "toto" avec comme variables PRENOM et VOITURE, alors voici une solution possible avec retain et la commande first.  :

Code:

data toto2(drop=voiture);
set toto;
by prenom;
retain voiture1;
if first.prenom then voiture1=voiture;
else voiture2=voiture;
if last.prenom;
run;

Comme dit précédemment, bien penser à trier la table toto par prénom.

Une autre solution possible pour généraliser le processus (le code précédent ne marche que si chaque individu a au maximum 2 voitures), à partir du moment où on sait quel est le nombre maximum de véhicule pour une seule personne (10 véhicules par exemple) :

Code:

data toto2(drop=voiture i);
set toto;
by prenom;
retain vehicule1-vehicule10 ;
array vehicule(10) $15.;
if first.prenom then do i=2 to dim(vehicule);
    vehicule1=voiture;
    vehicule(i)='.';
end;
else do i=2 to dim(vehicule);
    if vehicule(i)='.' and vehicule(i-1) NE voiture and vehicule(i-1) NE '.' then vehicule(i)=voiture;
end;
if last.prenom;
run;

Dernière modification par Benoit (08-04-2010 13:28:50)

Hors ligne

 

#5 08-04-2010 13:38:03

20syl
Member
Lieu: Orléans
Date d'inscription: 05-03-2007
Messages: 117

Re: repetition dans ma table sas

et :

proc transpose data=toto;
by prenom;
var nom_voiture;
run;



ca marche pas? smile

normalement tu devrais avoir ce que tu désires soit:

christophe velsatis smart
julie twingo
etienne cadillac 2cv

Hors ligne

 

#6 08-04-2010 13:38:31

kakame
membre extérieur
Date d'inscription: 08-04-2010
Messages: 3

Re: repetition dans ma table sas

je vous remercie:)

Hors ligne

 

#7 08-04-2010 14:29:02

Benoit
Member
Date d'inscription: 07-09-2009
Messages: 16

Re: repetition dans ma table sas

En effet c'est bien plus simple avec transpose, j'aurais appris quelque chose moi aussi.

Du coup çà fait un peu bourrin mon programme....Au moins çà plaira aux fans d'array neutral

Dernière modification par Benoit (08-04-2010 14:32:08)

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

[ Generated in 0.027 seconds, 7 queries executed ]