原始数据结构(有缺失数据)
image.png
- 复习下宽表变长表数据转换
data long;
set wide;
array tt(6) time1 - time6;
array xx(6) value1 - value6;
do i=1 to 6;
time=tt[i];
value=xx[i];
if value ne . then output;
end;
keep patient_id value time;
run;
- 本次新增每个ID的随访序列
data long0;
set long; /* 替换为实际的数据集名称和库名 */
by patient_id; /* 对patient_id进行分组 */
if first.patient_id then rep = 1; /* 如果是每个patient_id的第一行,则rep设置为1 */
else rep + 1; /* 否则,rep值加1 */
run;
-
最终数据结构如下
image.png
- 如果需要计算每个ID总随访次数
DATA COUNT;
SET long;
BY patient_id;
IF FIRST.patient_id THEN NUMBER = 0;
NUMBER + 1;
IF LAST.patient_id THEN OUTPUT;
KEEP patient_id time value NUMBER;
RUN;