如何在SAS中保留每个SUBJID对应的首次有效体重数据
提取每个SUBJID的首次有效体重数据(SAS实现)
要保留每个SUBJID对应的首次非缺失体重记录,可以用以下两种简洁的SAS实现方式:
方法一:DATA步按组遍历筛选
利用BY分组和RETAIN变量标记已找到的有效记录,精准定位每组第一个有效数据:
DATA Want; SET Have; BY SUBJID; RETAIN FOUND 0; /* 标记当前组是否已找到有效记录 */ /* 组内首次出现非缺失体重时输出并跳至下一组 */ IF NOT MISSING(WEIGHT) AND NOT FOUND THEN DO; OUTPUT; FOUND = 1; RETURN; /* 跳过同组后续记录,提升效率 */ END; /* 切换到新组时重置标记 */ IF FIRST.SUBJID THEN FOUND = 0; RUN;
方法二:PROC SQL子查询定位
通过子查询先获取每个SUBJID对应第一个有效体重的行号,再筛选目标记录:
PROC SQL; CREATE TABLE Want AS SELECT SUBJID, WEIGHT FROM Have WHERE (SUBJID, _N_) IN ( SELECT SUBJID, MIN(_N_) FROM Have WHERE NOT MISSING(WEIGHT) GROUP BY SUBJID ); QUIT;
运行任意一种代码后,都会得到符合预期的结果:
SUBJID WEIGHT 01 88 02 101
内容的提问来源于stack exchange,提问作者Ayyooo
相关产品推荐
相关产品推荐

