Bonjour,
J'aimerais pouvoir récupérer, pour un couple {date/echelle x}, dans le cas où ma variable duree est vide, la valeur de la variable durée du couple {date précédente/echelle x}.
J'ai fait des tentatives avec la fonction lag ou encore du retain, mais pour le moment je n'ai pas trouvé la solution.
La discussion suivante était prometteuse mais je n'ai pas réussi à l'adapter à mon cas :
[URL="http://www.developpez.net/forums/d1380496/logiciels/solutions-d-entreprise/business-intelligence/sas/sas-base/fonction-lag-sas/"]
Voici un extrait des données avec dans duree mes données initiales et dans duree_esperee ce que je n'ai pas et que je cherche à obtenir in fine :
Voici où j'en suis (mais ni la version sans commentaire => qui me renvoie bien des valeurs pour les lignes qu'il faut, mais à chaque fois la seule première valeur à cause du "first.") ni la version commentée (qui me renvoie les bonnes valeurs mais pas aux bonnes lignes car juste décalées par un "bête" lag) ne fonctionnent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 data truc; input datea echelle $ sal duree duree_esperee; format datea ddmmyy10.; cards; 15000 1 150 8 8 15000 2 151 8 8 15000 3 152 10 10 15000 E 154 . . 15012 1 200 . 8 15012 2 201 . 8 15012 3 202 . 10 15012 E 204 . . 15040 1 251 13 13 15040 2 252 11 11 15040 3 253 9 9 15040 E 255 . . 15100 1 301 . 13 15100 2 302 . 11 15100 3 303 . 9 15100 E 305 . . 15110 1 310 15 15 15110 2 311 15 15 15110 3 312 15 15 15110 E 314 . . ; run;
Je précise que je ne peux pas utiliser un lagx() car le x est différent d'un groupe d'observations à l'autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 data truc2; set truc; by datea echelle; retain duree_modelisee 0; /*if first.datea and first.echelle then */duree_modelisee = lag(duree); run;
D'avance merci pour toutes les idées proposées !
Partager