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

为何SAS执行指定代码后输出结果与预期不符?

问题原因

你的第二段SAS代码逻辑存在漏洞,导致输出不符合预期:

  • 当id_2不等于"zz"时,代码未设置任何过滤规则,SAS会默认保留这类观测(也就是所有xx、aa开头的行都会被保留下来)
  • 当id_2等于"zz"时,仅age_2=23的观测会被保留,其余zz开头的行被过滤,但这部分逻辑只处理了zz的情况,完全没对其他id的行做限制
修正方案

最简单的方式是直接用复合条件做过滤:

data prova_2;
set prova_2;
if id_2="zz" and age_2=23;
run;

如果一定要用do块实现,需要明确删除非zz的观测:

data prova_2;
set prova_2;
if id_2="zz" then do; 
    if age_2=23; 
end;
else delete; /* 主动删除所有非zz的观测 */
run;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:07:02