Bonjour,
J'ai un problème qui à mon avis nécessite l'utilisation d'un RETAIN et je n'arrive pas du tout à obtenir ce que je souhaite et le résultat est assez bizarre.
Je dois faire mes opérations au niveau identifiant et catégories (retour à 0 quand on change d'identifiant et de catégorie).
Voici un jeu de données d'exemple :
Je veux concaténer avec COMPRESS tous les enregistrements par ID et CAT, et donc avoir, par exemple, pour l'ID 2, "Hello sur la première ligne" et "Hello/Hi" sur la seconde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 data table; ID = 1; CAT = 1; VAL = "Bonjour"; output; ID = 2; CAT = 1; VAL = "Hello"; output; ID = 2; CAT = 1; VAL = "Hi"; output; ID = 3; CAT = 1; VAL = "Bonjour"; output; ID = 3; CAT = 1; VAL = "Hi"; output; ID = 3; CAT = 1; VAL = "Hello"; output; ID = 4; CAT = 1; VAL = "Bonjour"; output; ID = 4; CAT = 1; VAL = "Hello"; output; ID = 4; CAT = 2; VAL = "Hi"; output; run;
Ce que je fais ne donne rien de bon :
Je ne comprends absolument pas ce qu'il se passe, ni pourquoi SAS retient une valeur qui n'est pas celle de l'ID en question. Quelque soit la variable en RETAIN ou en FIRST, ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 data table_2; length valall $100; retain valall; set table; by ID CAT; if first.cat then valall = val; else valall = compress(lag(valall)||"/"||val); run;
Auriez-vous un conseil pour m'aider ?
Merci beaucoup,
alers
Partager