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
| DATA client1;
length idcl $3. client $8.;
input idcl client;
datalines;
001 Bernard
002 Laurent
003 Fabian
;
run;
DATA contrat2;
length idct $3. nom $5. idcl $3. am 3.;
input idct nom idcl am;
datalines;
101 AAAAA 001 150
102 BBBBB 001 200
103 CCCCC 003 500
;
run;
* Création d une seule variable pour les variables à transposer;
data contrat2 (drop = IDCT NOM AM COMPTEUR);
set contrat2 ;
by IDCL;
if first.IDCL then COMPTEUR = 0;
COMPTEUR + 1;
%macro CHANGEVAR (liste=, n=);
%do i=1 %to &n;
%let type= %scan(&liste,&i,%str( ));
LIB = COMPRESS("&type."||COMPTEUR);
VALEUR = &type.;
output;
%end;
%mend;
%CHANGEVAR (liste = idct nom am , n = 3);
run;
proc transpose data= contrat2
out = contrat2 (drop = _NAME_);
var VALEUR;
by idcl;
id LIB;
run;
proc sort data = contrat2; by idcl; run;
proc sort data = client1 ; by idcl; run;
data contrat2;
merge client1
contrat2;
by idcl;
run; |
Partager