2016-07-19 11 views
1

Ich möchte in der Lage sein, ein Flag, hier TimeFlag, die für jeden ersten und letzten Eintrag einer bestimmten Sitzung auf 1 festgelegt ist, durch logflag festgelegt werden. Was ich habe, ist die folgende, aber das gibt mir null Datenpunkte:Erstellen eines Flags für die erste und letzte in SAS

data OUT.TENMAY_TIMEFLAG; 
    set IN.TENMAY_LOGFLAG; 
    if first.logflag then timeflag = 1; 
    if last.logflag then timeflag = 1; 
run; 

Was ist das über die first. und last. Funktionen, die ich nicht hier bin zu verstehen, oder ist es, dass ich 2 if-Anweisungen haben?

Antwort

1
data OUT.TENMAY_TIMEFLAG; 
    set IN.TENMAY_LOGFLAG; 
    by logflag; 
    if first.logflag then timeflag = 1; 
    if last.logflag then timeflag = 1; 
run; 

P.S. In diesem Fall sollte der Datensatz IN.TENMAY_LOGFLAG nach logflag sortiert werden.

2

Um SAS zuerst erstellen zu lassen. und zuletzt. automatische Variablen müssen Sie eine BY-Anweisung verwenden. Wenn Sie wollen, dass die neue Variable 1/0 codiert wird, dann brauchen Sie die IF-Anweisung nicht, sondern weisen Sie die automatische Variable einer neuen permanenten Variablen zu. Um eine Variable zu erstellen, die 1 für die erste und die letzte ist, verwenden Sie einfach eine OR.

data want; 
    set have; 
    by logflag ; 
    timeflag = first.logflag or last.logflag ; 
run; 
Verwandte Themen