关于SAS Base中KEEP语句与KEEP=选项警告的技术问询
SAS中KEEP语句与数据集选项的优先级问题
首先,你的测试代码出现警告的原因很明确:SAS里数据步语句中的KEEP/DROP会优先于数据集选项中的KEEP/DROP。
你写的代码里:
- DATA语句的数据集选项
KEEP = Model Type本来想保留这两个变量,但后面紧接着的KEEP MSRP drivetrain;语句直接覆盖了之前的设置,最终只会保留MSRP和drivetrain这两个变量。 - 而Model和Type这两个变量因为被数据集选项的KEEP列表引用,但实际根本没被保留(相当于代码里没用到它们),所以SAS才抛出那两条警告。
回到你说的手册示例:如果示例的KEEP语句里包含未被引用的store_name变量,分两种情况判断:
- 如果
store_name在输入数据集中根本不存在,那这肯定是示例的错误,运行时会直接报类似的警告。 - 如果
store_name存在,但代码里没有通过任何方式让它进入输出数据集(比如被其他DROP/KEEP覆盖,或者数据步里没读取到),那也是示例的逻辑问题,导致该变量没被实际引用,触发警告。
简单说,你遇到的警告已经说明:代码里写了要保留某个变量,但实际这个变量并没有被保留到输出数据集里,要么是变量不存在,要么是KEEP规则冲突了。
内容的提问来源于stack exchange,提问作者Judy Zhang
相关产品推荐
相关产品推荐

