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

如何在SAS中用proc sql统计指定时间范围内各ID对应Code的出现次数

SAS 按ID和Code分组统计频次解决方案

PROC SQL 修正实现

原代码缺少分组计数逻辑,且SAS时间常量需要加t标识才能被正确识别,修正后代码如下:

proc sql;
/* 生成结果数据集want */
create table want as
select 
    ID,
    Code,
    count(*) as N  /* 统计每个分组的行数即出现次数 */
from have
where Time between '00:00:00.000't and '23:50:00.000't  /* 时间常量标准写法:引号包裹加t后缀 */
group by ID, Code;  /* 按ID、Code组合分组 */
quit;

非PROC SQL 简便实现

用SAS原生频次统计过程proc freq实现更简洁,无需手动写分组逻辑:

/* 第一步:筛选符合时间范围的数据 */
data temp;
set have;
where Time between '00:00:00.000't and '23:50:00.000't;
run;

/* 第二步:分组统计频次,直接输出符合要求的汇总表 */
proc freq data=temp noprint;
tables ID*Code / out=want(keep=ID Code Count rename=(Count=N));
run;

补充说明:如果你的Time字段为字符类型而非SAS时间数值类型,需要先转换为数值格式再筛选,转换语法:Time_num = input(Time, time12.3);,后续使用Time_num做时间条件判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:02