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

使用SAS Do循环筛选comp1-comp10含36的记录并生成新表

SAS带Do循环筛选记录的程序实现

原始SAS数据集结构及数据如下:

id comp1 comp2 comp3 comp4 comp5 
1  12     14    45    78   74
2  25     45    36    88   45

实现代码

/* 读取原始数据集,假设原始数据集名为original_data */
data filtered_data;
    set original_data;
    /* 定义临时变量标记是否符合筛选条件 */
    keep_flag = 0;
    /* Do循环遍历comp1至comp10变量 */
    do i = 1 to 10;
        /* 动态生成变量名并检查值是否为36 */
        if vvaluex(cats('comp', i)) = '36' then do;
            keep_flag = 1;
            leave; /* 找到符合条件的变量后立即退出循环,提升效率 */
        end;
    end;
    /* 仅保留符合条件的记录 */
    if keep_flag = 1;
    /* 删除临时变量,避免进入新数据集 */
    drop i keep_flag;
run;

代码说明

  • 用do i = 1 to 10遍历目标变量组,覆盖comp1到comp10
  • cats('comp', i)动态拼接变量名,vvaluex()函数根据拼接后的名称获取变量值,完成与36的匹配
  • keep_flag作为筛选标记,找到匹配项后设为1并退出循环,减少不必要的遍历
  • 最后通过if keep_flag = 1筛选出符合要求的记录,生成新数据集filtered_data

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:23:07