gpt4 book ai didi

programming-languages - 有条件地保留SAS中的变量

转载 作者:行者123 更新时间:2023-12-04 08:40:18 25 4
gpt4 key购买 nike

我有这个 SAS 示例代码:

data BEFORE;
input v1 v2;
datalines;
1 2
;

data AFTER;
put 'Before IF: ' _ALL_;
if _N_ = 1 then set BEFORE;
put 'After IF : ' _ALL_;
run;

输出是:

BEFORE: v1=. v2=. _ERROR_=0 _N_=1
AFTER : v1=1 v2=2 _ERROR_=0 _N_=1
BEFORE: v1=1 v2=2 _ERROR_=0 _N_=2
AFTER : v1=1 v2=2 _ERROR_=0 _N_=2

输出文件包含:

Obs    v1    v2
1 1 2
2 1 2

我知道 SET 会导入并保留 BEFORE 数据集的变量,但为什么 BEFORE 的记录会重复?

最佳答案

我运行了您的示例代码,但您遗漏了一条关键信息:这条消息在 SAS 日志中:“注意:DATA STEP 由于循环而停止。”。谷歌搜索该消息使我找到了 a SAS paper describing the error .建议不要在 SET 语句之前使用 IF 语句,而是使用 OBS= 数据集选项来限制读取的观察数。

所以你会改变这一行:

if _N_ = 1 then set BEFORE;

到:

set BEFORE(obs=1);

当我运行带有此更改的代码时,“Before IF:”行仍然打印两次,我不确定为什么会这样。但是没有出现循环注解,所以我相信这是解决方案。

关于programming-languages - 有条件地保留SAS中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com