logo

SAS/BASE : Identifier des doublons

Bonjour,

j’aimerais savoir comment faire pour comparer des observations au seins d’une même variable.
Par exemple, j’ai une variable nom et une variable adresse au sein d’une même table. J’aimerais regarder au seins de ma table s’il existe des observations qui ont les memes valeurs pour les 2 variables. Si c’est le cas, je veux attribuer un numéro identique à ces observations.

Merci d’avance pour votre aide.

 

Vous pouvez, après un tri de votre table, utiliser une étape Data dans laquelle vous ajouterez au SET une instruction BY contenant les variables sur lesquelles vous pensez avoir des répétitions.
Cette instruction BY génère des variables temporaires à l’étape Data, appelées FIRST.nomVariable et LAST.nomVariable, nomVariable étant les noms cités dans l’instruction BY. Les variables FIRST sont vraies quand c’est la 1e fois que l’on rencontre cette valeur, et fausses sinon. Les variables LAST sont vraies quand c’est la dernière fois qu’on rencontre cette valeur, et fausses sinon.

L’ordre des variables dans BY implique une imbrication des valeurs : par exemple, BY nom adresse ; va générer FIRST.nom qui sera vraie quand on rencontrera ce nom de famille pour la 1e fois, et fausse sinon, et FIRST.adresse qui sera vraie quand on rencontrera cette adresse pour la 1e fois à l’intérieur du bloc de ce nom de famille.

On peut ensuite gérer facilement un identifiant (compteur) qui ne sera incrémenté que si l’adresse est nouvelle pour ce nom et ce prénom, par exemple.

PROC SORT DATA = mesDonnees ;
     BY nom prenom adresse ;
RUN ;
DATA mesDonnees ;
     SET mesDonnees ;
     BY nom prenom adresse ;
     RETAIN identifiant 0 ;
     IF FIRST.adresse THEN identifiant = identifiant + 1 ; 
RUN ;