Bonjour,
Je n'ai pas réussi à trouver le même problème donc je le poste ici :
J'ai une table qui est transposée avec en colonnes des variables commençant par "used_". En faisant le proc transpose avant, j'obtiens un nombre de colonnes variable selon ma table de départ, ça peut aller de 3 à plus de 20.
Ma deuxième étape consiste à faire une somme pour chaque ligne de ses colonnes. J'ai donc écrit une proc sql (car je fais une fusion en même temps):
Mais pour ne pas avoir à changer le nom used_... à chaque fois que je lance le programme pour une nouvelle table, je me demandais si je pouvais écrire un programme en utilisant sum(like 'used_%') mais ça me marque une erreur de syntaxe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 PROC SQL; CREATE TABLE Pref_utilization3 (drop= TL2) AS SELECT a.*, sum(used_MFN_zero, used_MFN_dutiable, used_GSP, used_LDC, used_J47, used_J91) as import_value, b.cat FROM Pref_utilization2 AS a LEFT JOIN cat_secteur AS b ON a.TL2 = b.HS6; QUIT;
Sinon j'ai pensé à faire une boucle du type :
Le programme est faux bien sûr... et il ne permet pas d'automatiser le processus car le nombre de variables est fixé à 4.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 %let pref1=GSP; %let pref2=J47; %let pref3=LDC; %let pref4=J91; DATA ESSAI; SET Pref_utilization2; DO i=1 to 4; *mais le nombre de variable peut changer; tot=sum(&&used_pref&i.); end; RUN;
Merci pour vos réponses.
Partager