SAS- auf Daten der nächsten Zeile zugreifen?

... komplette Frage anzeigen

2 Antworten

Eine etwas trickreichere Variante, doch auf die nächste Beobachtung zuzugreifen, wäre ein Merge ohne by-statement, indem Du die Datei (ich nenne sie xxx) mit sich selbst mergst, aber bei einer erst mit der 2. Zeile anfängst:

data check;

merge xxx (firstobs=1)   /* die Klammer kannst Du natürlich weglassen */
            xxx (firstobs=2 rename = (id=next_id level=next_level));

if next_level ^= level then put id= level= next_level=;

run;

Gewöhn Dir aber ansonsten bitte nicht an, ohne by-statement zu mergen, das kann gefährlich werden

Antwort bewerten Vielen Dank für Deine Bewertung

SAS kann unmittelbar nur auf die vorige Zeile zugreifen, mit der lag-Funktion:

previous_level = lag (level);

if level ^= previous_level then put _n_= id= previous_level= level=;

Damit bekommst Du alle Zeilen angelistet, in denen level vom Vor-Level abweicht


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Elmar1988
15.11.2015, 14:24

Vielen dank. Ist auf jeden Fall ein hilfreicher Vorschlag:)

0

Was möchtest Du wissen?