【问题标题】:How to create new macro variable from existing macro variables using calculations in SAS?如何使用 SAS 中的计算从现有宏变量创建新的宏变量?
【发布时间】:2013-04-08 14:32:47
【问题描述】:

我想从其他已经存在的宏变量中创建一个新的宏变量。

我尝试了 call symput%evalinput 的多种变体,但无济于事...

我希望 d 评估为 3 / 30 = .10。


*****  taken directly from the sas help files...  ;

%let a=1+2;
%let b=10*3;
%let c=5/3;
%let eval_a=%eval(&a);
%let eval_b=%eval(&b);
%let eval_c=%eval(&c);

%put &a is &eval_a;
%put &b is &eval_b;
%put &c is &eval_c; * not sure why this evaluates to 1, but I'm sure it's documented somewhere... ;


*****  This evaluates to 0...

%let d = %eval(%eval(&a) / %eval(&b)) ; 

%put &d ;

非常感谢...

【问题讨论】:

  • 为什么要对宏变量进行数学运算?
  • 我们中心使用旧的 SAS 打印宏来生成报告表格。表格被勾勒出来,然后我们必须制作它们。很多时候,在数据集中工作或使用数据步骤都可以正常工作,但有时使用此方法生成值要快得多。
  • 啊,好的。可能会向合唱团讲道,但如果你有机会进行现代化改造,那就去做吧 - 现在 SAS 制表选项比过去需要的要好 1000 倍。

标签: sas sas-macro


【解决方案1】:

%eval 只会返回一个整数。要得到小数点,需要使用 %sysevalf。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多