-1
votes

Supprimer des observations avant 'début' et après "fin" - code SAS

Ma table a des observations de premier plan et de fuite que j'essaie de supprimer. Je souhaite supprimer les lignes qui arrivent avant chaque événement de «début» et après chaque événement «fin» pour chaque groupe. La table ressemble au ci-dessous: xxx

sas

0 commentaires

3 Réponses :


0
votes

Un moyen de faire est xxx


0 commentaires

0
votes

Je suis sorti de manière simple mais sera limitée par la taille de données réelle.

data have;
input  Time  Group  Event $ Value  ;
datalines;
1      1   NA          0 
2      1   NA          0 
3      1   Begin     1.1 
4      1   NA        1.2 
5      1   NA        1.3 
6      1   End       1.4 
7      1   NA          0 
1      2   NA          0 
2      2   Begin     1.1 
3       2  NA        1.2 
4       2  End       1.3 
5       2  NA        1.4 
;
run;

proc sort data = have;
     by group time;
run;

data have1;
     set have;
     count + 1;
     by group;
     if first.group then count = -100;
     if event = 'Begin' then count = 0;
     if event = 'End' then count = 100;
     if count < 0 or count >100 then delete;
run;


0 commentaires

2
votes

sur la présomption selon laquelle les données entrantes sont déjà triées et qu'il existe des gammes zéro ou plus bornées en série de commencer à se terminer dans chaque groupe:

data want;
  do until (last.group);
    set have;
    by group time;
    if event = 'Begin' then _keeprow = 1;
    if _keeprow then output;
    if event = 'End' then _keeprow = 0;
  end;
  drop _keeprow;
end;


0 commentaires