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

如何自动生成分析所用年份的规范化标签?

动态生成年份范围标签的SAS宏实现

核心思路

  1. 先对输入的年份列表排序(确保年份按升序处理)
  2. 用循环遍历年份,维护当前连续区间的起始年份
  3. 当检测到年份不连续时,将当前完成的区间存入结果,重置起始年份
  4. 循环结束后处理最后一个未保存的区间
  5. 用&拼接所有区间,生成符合要求的标签

完整SAS宏代码

%macro create_year_label(year_list);
    /* 将输入的年份列表转换为有序数据集 */
    data _temp_years;
        length year 4;
        do year = &year_list;
            output;
        end;
        sort by year;
    run;

    /* 初始化变量并生成标签 */
    data _null_;
        set _temp_years end=last;
        retain start_year result "";
        length result $200;

        if _n_ = 1 then do;
            start_year = year;
            prev_year = year;
        end;
        else do;
            /* 检测年份是否连续 */
            if year ne prev_year + 1 then do;
                /* 生成当前区间的字符串 */
                if start_year = prev_year then do;
                    result = catx(" & ", result, put(start_year, 4.));
                end;
                else do;
                    result = catx(" & ", result, cat(put(start_year, 4.), "-", put(prev_year, 4.)));
                end;
                start_year = year;
            end;
            prev_year = year;
        end;

        /* 处理最后一个年份区间 */
        if last then do;
            if start_year = year then do;
                result = catx(" & ", result, put(year, 4.));
            end;
            else do;
                result = catx(" & ", result, cat(put(start_year, 4.), "-", put(year, 4.)));
            end;
            /* 将结果存入宏变量 */
            call symputx('year_label', result);
        end;
    run;

    /* 清理临时数据集 */
    proc datasets nolist;
        delete _temp_years;
    run;
%mend;

使用示例

/* 调用宏,传入示例年份列表 */
%create_year_label(2015,2016,2017,2019,2020);

/* 输出生成的标签 */
%put 生成的年份标签:&year_label;

运行后会在日志中输出:生成的年份标签:2015-2017 & 2019-2020

关键细节说明

  • 输入的年份列表可以是任意3-10个无序年份,宏内部会自动排序
  • 用retain语句保持start_year和result的值在循环迭代中不重置
  • catx函数负责拼接区间,自动处理分隔符&的位置,避免首尾多余符号
  • 最终结果存入宏变量&year_label,可直接用于后续指标标签展示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:11:31