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

SAS多列多值检索:统计TDIAG1-TDIAG10中T3100-T3199出现次数

SAS实现TDIAG列区间匹配计数方案

你可以通过数组遍历加条件判断的方式实现需求,完整代码如下:

/* 生成计数结果数据集 */
data want;
    set temp;
    Count = 0;
    /* 定义存储10个诊断列的数组 */
    array diag_cols[*] TDIAG1-TDIAG10;
    /* 遍历每一列判断是否符合区间要求 */
    do i = 1 to dim(diag_cols);
        if diag_cols[i] >= 'T3100' and diag_cols[i] <= 'T3199' then Count + 1;
    end;
    drop i;
run;

/* 可选:打印结果验证 */
proc print data=want noobs;
run;

逻辑说明

  • 这里利用SAS字符型变量的字典序比较规则,>= 'T3100'且<= 'T3199'的判断刚好可以匹配所有前缀为T31、后两位为00-99的取值,符合需求。
  • 若实际数据中TDIAG列存在首尾空格的情况,可将判断条件修改为strip(diag_cols[i]) >= 'T3100' and strip(diag_cols[i]) <= 'T3199'消除空格影响。

结果验证

运行上述代码后得到的计数结果和示例一致:比如第7条记录符合条件的取值有T3100、T3122、T3160,Count值为3;第9条记录符合条件的取值有T3100、T3160,Count值为2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 06:54:07