gpt4 book ai didi

sas - Proc SQL 缺失值赋值

转载 作者:行者123 更新时间:2023-12-01 23:18:30 25 4
gpt4 key购买 nike

如果我运行生成零行的查询,我仍然希望创建一个 SAS 数据集,其中一行的所有列都分配了缺失值。

我找到了一种使用单独的数据步骤来执行此操作的方法:

%let dsid   = %sysfunc (open(myfile));
%let anyobs = %sysfunc (attrn(&dsid,ANY));
%let dsid = %sysfunc (close(&dsid));
data _null_;
if &anyobs=0 then do;
call execute('data work.myfile; call missing(col1, col2, col3); run;');
end;

这很好用,但我想知道是否有办法为 proc sql 中的每一列分配缺失值?

谢谢丹

最佳答案

假设您执行此操作:

proc sql;
create table class as
select * from sashelp.class
where age=19;
quit;

那么你可以这样做:

%macro ifMissingRow(data=);
%let dsid = %sysfunc (open(&data.));
%let anyobs = %sysfunc (attrn(&dsid,ANY));
%let dsid = %sysfunc (close(&dsid));
%if &anyobs=0 %then %do;
data &data.;
output;
set &data.;
run;
%end;
%mend ifmissingRow;

%ifMissingRow(data=class);

输出在 set 之前,以便在 SET 停止具有 0 行的数据步骤之前获取行(指针为 h/t Tom)。

关于sas - Proc SQL 缺失值赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43213002/

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