У меня есть следующие данные:
Patient Visit VisitNumber LAB LABVALUE
001 BASELINE 1 LAB1 10
001 DAY 100 2 LAB1 15
001 DAY 200 3 LAB1 12
002 BASELINE 1 LAB1 11
002 DAY 100 2 LAB1 14
002 DAY 200 3 LAB1 12
001 BASELINE 1 LAB2 40
001 DAY 100 2 LAB2 45
001 DAY 200 3 LAB2 42
002 BASELINE 1 LAB2 41
002 DAY 100 2 LAB2 44
002 DAY 200 3 LAB2 42
Я хотел бы создать следующую таблицу, которая суммирует переменную 'LABVALUE' для всех пациентов при каждом посещении (Таблица 2):
Visit VisitNumber LAB MEAN BASELINEMEAN CHANGEBASEMEAN
BASELINE 1 LAB1 10.5 10.5 .
DAY 100 2 LAB1 14.5 10.5 4
DAY 200 3 LAB1 12 10.5 1.5
BASELINE 1 LAB2 40.5 40.5 .
DAY 100 2 LAB2 44.5 40.5 4
DAY 200 3 LAB2 42 40.5 1.5
У меня есть следующий код, который генерирует изменение значений от базовой линии для каждого посещения пациента:
proc sort data=have;
by patient lab visitnumber;
run;
data for_report;
set have;
by patient lab;
retain base_visitnum base_labvalue;
if first.patient then do;
base_visitnum = .;
base_labvalue = .;
end;
if first.lab and visit='BASELINE' then do;
base_visitnumber = visitnumber;
base_labvalue = labvalue;
end;
if not first.lab then do;
delta_labvalue = labvalue - base_labvalue;
end;
run;
Это генерирует следующую таблицу:
LAB Visit VisitNumber LABVALUE BASE_VISITNUM BASE_LABVALUE DELTA_LABVALUE
LAB1 BASELINE 1 10 1 10 .
LAB1 DAY 100 2 15 1 10 5
LAB1 DAY 200 3 12 1 10 2
LAB1 BASELINE 1 11 1 11 .
LAB1 DAY 100 2 14 1 11 3
LAB1 DAY 200 3 12 1 11 1
LAB2 BASELINE 1 40 1 10 .
LAB2 DAY 100 2 45 1 10 5
LAB2 DAY 200 3 42 1 10 2
LAB2 BASELINE 1 41 1 11 .
LAB2 DAY 100 2 44 1 11 3
LAB2 DAY 200 3 42 1 11 1
Любое понимание как как я могу сгенерировать таблицу 2 будет принята с благодарностью.