Comment positionner des lignes concernant le même identifiant les unes à la suite des autres ? Par ex:
identifiant | nom | prenom | date naissance |
111 | durand | paul | 01/10/1987 |
111 | durand | guy | 26/01/1999 |
111 | durand | pierre | 13/09/2001 |
333 | dupont | jack | 16/12/2004 |
Le problème est de positionner la famille durand , identifiant 111, sur la même ligne.
Je vous remercie.
Bonjour, et merci de votre question.
Ce genre de « pivotage » de données n’est pas simple, et SAS ne fait pas grand-chose pour nous y aider. Il faut utiliser la procédure TRANSPOSE, sur chacune des variables à pivoter (ici, PRENOM et DATE DE NAISSANCE. On obtient plusieurs tables que l’on combinera dans une étape Data, avec plusieurs instructions SET.
Le programme suivant résume les manipulations à effectuer…
DATA work.test ; INPUT id nom $ prenom $ dtnais DDMMYY10. groupe_sanguin $ ; CARDS ; 111 durand paul 01/10/1987 AB 111 durand guy 26/01/1999 A 111 durand pierre 13/09/2001 A 111 durand karl 14/10/2002 O 111 durand marie 14/10/2002 A 111 durand ulysse 25/01/2004 B 111 durand éléonore 25/01/2004 A 111 durand garance 25/01/2004 B 111 durand télémaque 25/01/2004 AB 111 durand vanessa 07/09/2005 A 111 durand armelle 07/09/2005 O 333 dupont jack 16/12/2004 AB ; RUN ; PROC SORT DATA = work.test ; BY id nom ; RUN ; PROC TRANSPOSE DATA = work.test OUT = work.res1 (DROP = _NAME_) PREFIX = prenom ; BY id nom ; VAR prenom ; RUN ; PROC TRANSPOSE DATA = work.test OUT = work.res2 (DROP = _NAME_) PREFIX = dtnais ; BY id nom ; VAR dtnais ; FORMAT dtnais DDMMYY10. ; RUN ; PROC TRANSPOSE DATA = work.test OUT = work.res3 (DROP = _NAME_) PREFIX = gpe_sanguin ; BY id nom ; VAR groupe_sanguin ; RUN ; DATA work.fus ; SET work.res1 ; SET work.res2 ; SET work.res3 ; BY id nom ; RUN ;
Je tiens à remercier Bernard Gestin de m’avoir soufflé cette solution plus simple que celle que j’avais proposée initialement.