У меня есть набор данных, который выглядит следующим образом для нескольких пациентов.Я пытаюсь вычесть каждое значение посещения из базового значения соответствующих переменных (которые иногда отсутствуют).
Data Have:
Patient Variable Value Visit
A Height 100 Baseline
A Weight 50 Baseline
A HDCIRC 30 Baseline
A BMI 50 Baseline
A Height 100 a
A Weight 50 a
A HDCIRC 30 a
A BMI 50 a
A Height 100 b
A Weight 50 b
Data Want:
Patient Variable Value Visit BASELINE Change
A Height 100 Baseline 100 0
A Weight 50 Baseline 50 0
A HDCIRC 30 Baseline 30 0
A BMI 50 Baseline 50 0
A Height 120 a 100 20
A Weight 50 a 50 0
A HDCIRC 30 a 30 0
A BMI 34.7 a 50 -15.3
A Height 150 b 100 50
A Weight 51 b 50 1
Моя попытка будет сначала создать BASELINE, а затем рассчитать изменение.Чтобы получить BASELINE, я видел, как некоторые люди используют функцию lag или dif.Как я могу правильно создать переменную BASELINE?
proc sort data=have;
by patient visit;
;
data want;
set have;
by patient visit;
difstamp = dif(visit);
if first.patient then do;
dif=0;
end;
else dif=difstamp;
drop difstamp;
run;
proc sort data=want;
by timestamp;
run;