标签: sas-macro

SAS - 正确生成可变文件名

我正在尝试生成一个变量文件名.

ods pdf file ="D:\ FileDirectory\&& mFileNameVariable&I .pdf"notoc;

这会生成一个变量文件名,但会在扩展名之前添加一个空格(例如FileName .pdf;我需要FileName.pdf).

我读到你可以这样做:

ods pdf file ="D:\ FileDirectory\&& mFileNameVariable&I..pdf"notoc;

添加扩展点; 但是,当我尝试该宏不起作用时,我得到一个WYSIWYG值(例如.&& mFileNameVariable&I.pdf).

我假设它是因为我的字符串以"&I"结尾.

我想到的另一个解决方案,但是它不必要/解决方法是修剪(FilePathAndName)和/或(或者FilePathAndName FileExtension)将值单独地连接起来.

我们非常感谢您的任何见解或反馈,并提前感谢您的时间和帮助.

干杯!

filenames sas sas-macro

1
推荐指数
1
解决办法
2617
查看次数

如何使用数据步骤而不是SQL从数据集列创建宏变量?

我们可以使用语法通过SAS SQL Procedure创建宏变量

select var into :mvar
Run Code Online (Sandbox Code Playgroud)

但我想知道在数据步骤中是否存在相同的方式.

我有一个数据集.

A    B
===  ===
a1   b1
a2   b2
a3   b3
Run Code Online (Sandbox Code Playgroud)

我可以MA使用下面的语句创建一个宏变量.

proc sql noprint;
   select "'"||A||"'" into :MA separated by ","
   from dataset;
quit;
Run Code Online (Sandbox Code Playgroud)

如何在数据步骤中执行此操作?

sas datastep sas-macro

1
推荐指数
1
解决办法
301
查看次数

控制程序流程 - sas

下面是基于增量变量"i"的值执行一组数据步骤的代码.因为我已将i的值分配给1(数字而非字符值).理想情况下,第一个数据步骤块需要执行,但在下面的情况下,第二个数据步骤块正在执行.

%put&i.; 将1打印到日志窗口.

%macro DSN;
%let i = 1 ;
data new_DSN;
run;
%if i = 1 %then %do;    
    data Dummy ;
    run;
    data DUMMY_ ;
        set DUMMY new_DSN ;
    run;
%end;
%else %if i ^= 1 %then %do ;
    data DUMMY_ ;
       set DUMMY_ new_DSN ;
    run;
%end;
%mend DSN;

%DSN;
Run Code Online (Sandbox Code Playgroud)

sas sas-macro

1
推荐指数
1
解决办法
65
查看次数

SAS宏输出文件命名约定

我有一个sas宏,它依赖于两个不同的变量,分别用AgeYear表示.&Age&Year

我想为15-18岁和2007-2010年的每个组合运行宏,并希望为这些组合中的每一个创建一个输出表(即总共16个表).

这是我的问题,我尝试在Matrix_pop_adm&Age_RP&YearSAS不喜欢的宏中给输出表以下名称.

如何正确命名输出文件?

filenames sas sas-macro

0
推荐指数
1
解决办法
127
查看次数

SAS宏中此代码的逻辑是什么?

%let x = 15;


  %macro test;
        %let x = 10;
        %put x inside macro test = &x;
    %mend test;

    %test;

    %put x outside the macro test =&x;
    %put x inside the macro test =&x;
Run Code Online (Sandbox Code Playgroud)

我需要知道宏定义之外的测试值是多少?

sas sas-macro

0
推荐指数
1
解决办法
84
查看次数

为什么proc在SAS宏中写入时不需要%符号

我有一个关于SAS宏的基本问题.在sas宏内部,当你编写一个let语句或put语句或if语句时,你总是用%前缀.

但是当你在宏中写一个'proc'时,为什么我们不需要写%proc?或者例如%data?

sas sas-macro

0
推荐指数
1
解决办法
87
查看次数

标签 统计

sas ×6

sas-macro ×6

filenames ×2

datastep ×1