sas - 如何根据 SAS 工作文件中的观察数运行部分宏
问题描述
我对在 SAS 上做宏很陌生,所以如果我的问题看起来很基本,请提前道歉。
如果在临时工作文件中找到最少数量的观察,我希望执行部分宏。
如果有最少数量的观察,宏应该执行该临时工作文件的 proc 导出,否则它只会在日志上产生错误消息。
我不确定我做错了什么,临时工作文件有超过 1 个观察值,我希望宏运行,但是它会产生错误消息,就好像它小于最小值一样。
以下是我迄今为止创建的代码 - 您提供的任何帮助都将受到欢迎。
data original_data;
set data.dataset;
keep column1 column2 column3 ;
run;
%macro test_macro;
%let dsid=%sysfunc(open(work.original_data));
%let nobs=%sysfunc(attrn(&dsid,nobs));
%let dsid=%sysfunc(close(&dsid));
%if &nobs >1 %then %do;
%put ERROR: No observations counted;
%return
%end
%else %do;
proc export data=submissions
outfile='C:\Users\myusername\Desktop\test.csv'
DBMS=csv replace;
run;
%end;
%mend test_macro;
%test_macro
解决方案
- RETURN 和 END 语句中缺少分号
- 逻辑颠倒了。如果您有多个观察结果,则您正在输入错误消息。如果您有多个观察结果,请翻转您的代码以便导出。
options mprint symbolgen;
%macro test_macro;
%let dsid=%sysfunc(open(work.original_data));
%let nobs=%sysfunc(attrn(&dsid, nobs));
%let dsid=%sysfunc(close(&dsid));
%put &nobs;
*if more than one observation;
%if &nobs > 1 %then
%do;
proc export data=sashelp.class outfile='/home/fkhurshed/test.csv' DBMS=csv
replace;
run;
%end;
%else
%do;
%put ERROR: No observations counted;
%return;
%end;
%mend test_macro;
%test_macro;
推荐阅读
- tensorflow - 保存和加载 GAN 模型以使用 Keras 继续训练
- graphql - 是否可以在订阅注册时使用 HotChocolate 推送有效负载?
- python - 满足第一个条件后执行第二个更新语句
- android - 无法设计布局时如何从 R.id 中查找符号变量?
- c - UDP 套接字绑定 windows 10 与 windows 7
- angular - “测量”类型上不存在属性“传感器”
- angular - 在Angular 6中将动态值传递给SCSS文件
- django - “模型类 myproject.models.MyModel 在 Django 测试期间未声明显式 app_label”
- oracle - 如何重命名调度程序作业 Oracle
- regex - 检查是否定义了多个字母范围