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 20/09/2011, 11h32   #1
Invité de passage
 
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 2
Points : 2
Par défaut Gestion de doublons

Bonjour,
J'ai une table qui contient beaucoup de doublons que je souhaite supprimer. Mais le problème est que pour chaque doublon, il existe,des fois, une des qui a une information incomplète. donc c'est ce dernier que je souhaite supprimer.
Exemple
ID.... nom......Ville
1.......Jean
1.......Jean.......Grenoble
2........Ema....... Paris
2....... Ema.........
En sorti je veux avoir
ID.... nom......Ville
1.......Jean.......Grenoble
2........Ema....... Paris
Merci d'avance
jimbo53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 11h56   #2
Membre habitué
 
Homme
Consultant informatique
Inscription : mars 2002
Messages : 211
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2002
Messages : 211
Points : 133
Points : 133
Hello,

Essaye ceci:
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
 
/* Les données source que tu as renseignées*/
DATA source;
	length Nom $8. Ville $8.;
	id = 1;
	Nom = 'Jean';
	Ville='';
	output;
	id = 1;
	Nom = 'Jean';
	Ville = 'Grenoble';
	output;
	id = 2;
	Nom = 'Ema';
	Ville = 'Paris';
	output;
	id = 2;
	Nom = 'Ema';
	Ville='';
	output;
run;
 
/*On groupe les données par ID */
proc sort DATA=source;
	BY id;
run;
 
/*Le résultat attendu*/
DATA result(keep=RId Rnom RVille);
	SET source;
 
	length RNom $8. RVille $8.;
 
	BY id;
             /* On retient les valeurs*/
	retain RVille RNom;
            /* on initialise les valeurs à rien (ici des string)*/
	IF first.id then
		do;
		RVille='';
		RNom='';
		end;
 
	IF NOT missing(Nom) then
		RNom=Nom;
	IF NOT missing(Ville) then
		RVille=Ville;
            /*Si on est dans le dernier du group by, on sort le résultat*/
	IF last.id then
		do;
		RId= id;
		output;
		end;
run;
Et dis nous si ça solutionne ton problème.
L0007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h35   #3
Membre habitué
 
Homme
Consultant informatique
Inscription : mars 2002
Messages : 211
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2002
Messages : 211
Points : 133
Points : 133
En fait si tes valeurs incomplètes correspondent à des champs vides,
voici une solution plus simple:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
proc sort DATA=source;
	BY descending id descending Nom descending ville  ;
run;
 
DATA result2;
	SET source;
 
	BY descending id descending Nom descending ville ;
 
	IF first.id then
		output;
run;
L0007 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 03h32.


 
 
 
 
Partenaires

Hébergement Web