You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除SessionTime不一致的受试者ID?求SAS实现代码示例

批量移除SessionTime不一致的受试者ID的SAS代码

需求说明:每个受试者ID对应8条观测值,且同一ID的SessionTime必须完全一致。若某ID存在多种不同的SessionTime(如示例中的ID#5),需将该ID的所有观测值批量移除。

以下提供两种可行的SAS实现方法:

方法一:使用PROC SQL关联筛选

/* 第一步:统计每个ID的不同SessionTime数量 */
proc sql;
    create table valid_ids as
    select id
    from work
    group by id
    having count(distinct SessionTime) = 1; /* 只保留SessionTime唯一的ID */
quit;

/* 第二步:从原数据中筛选出符合条件的ID */
proc sql;
    create table work_cleaned as
    select *
    from work
    where id in (select id from valid_ids);
quit;

方法二:使用DATA步+PROC SORT标记过滤

/* 第一步:按ID和SessionTime排序 */
proc sort data=work;
    by id SessionTime;
run;

/* 第二步:标记存在多个SessionTime的ID */
data marked_ids;
    set work;
    by id;
    retain has_multiple 0;
    if first.id then do;
        has_multiple = 0;
        prev_time = SessionTime;
    end;
    else if SessionTime ne prev_time then do;
        has_multiple = 1;
        prev_time = SessionTime;
    end;
    if last.id then output; /* 仅保留每个ID的最后一条标记记录 */
    keep id has_multiple;
run;

/* 第三步:筛选出符合条件的ID并合并回原数据 */
proc sql;
    create table work_cleaned as
    select w.*
    from work w
    inner join marked_ids m on w.id = m.id
    where m.has_multiple = 0;
quit;

验证结果

运行上述任意一种方法后,生成的work_cleaned数据集将仅保留ID#1、#2、#3、#4的所有观测值,ID#5的8条记录会被全部移除,符合需求。

内容的提问来源于stack exchange,提问作者Chirag Vyas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:23:55