【问题标题】:Macro Automization via Prompts in SAS EG通过 SAS EG 中的提示实现宏自动化
【发布时间】:2016-05-03 16:47:18
【问题描述】:

这是我的桌子

 data:
 ax bx cx dx ex fx
 1   2  3  4  5 5
 2   3  5  1  0 5
 3   7  8  9  1 4

这是我的基本代码

%macro example(c= , b= ,a= );
 data temp;
 set  data;
diff = &c-(&b+&a);
run;
%mend example;
% example(c=cx ,b=bx ,a=ax)

我想通过在 SAS EG 中设置类似提示的功能来自动化 diff = c-(b+a) 但我不知道该怎么做?我的目标是能够在“差异”方程中更改我的特征(例如,代替 cx,我想将 f 或代替 ax,e 等等),因为我的实际数据由数千列组成。 如果您能帮助我,我将不胜感激。

【问题讨论】:

    标签: sas prompt sas-macro enterprise-guide


    【解决方案1】:

    要自动执行此操作,您可能需要进行三个提示。每个变量 (c,b,a) 一个。 (当然,称它们为描述性的,而不是 c、b、a!)选择“在整个项目中使用”和“需要非空白值”。也许添加一些更有用的文字来描述它们是什么。

    然后,您需要有一种填充它们的方法。您可以从静态列表中填充它们(在其中输入可能的值),就像您每次在其中输入它们的打开文本框一样,或者您可以从数据源中填充它们。从数据源填充的机制取决于您的本地设置 - 例如,您是使用“本地 EG”还是将 EG 连接到元数据服务器 - 但总的来说应该相当简单。

    在“用户从静态列表中选择值”中,选择“获取值”,然后选择“浏览”以获取 SAS 数据文件;或“用户从动态列表中选择值”,做同样的事情。后者将始终检查数据源是否有更新,而前者只是在提示创建时填充列表。

    最后,在您的程序中,您的宏调用将如下所示:

    %example(c=&c ,b=&b ,a=&a)
    

    其中&c &b &a 是提示名称(如果您也给它一个较长的文本名称,则为“短”名称)。

    【讨论】:

      【解决方案2】:

      你想要的是这样的:

      /*Define Prompt*/
      %window info
        #5 @5 'Var1:'
        #5 @13 var1 2 attr=underline
        #7 @5 'Var2:'
        #7 @13 Var2 2 attr=underline
        #9 @5 'Var3:'
        #9 @13 Var3 2 attr=underline;
      
      /*Show Prompt*/
      %display info;
      
      /*Display Macro Variables in the Log*/
      %put &var1;
      %put &var2;
      %put &var3;
      
      %example(c=&var1 ,b=&var2 ,a=&var3)
      

      【讨论】:

      • 这在 EG 中不起作用。 EG有自己的提示界面。
      • 抱歉 - 错过了企业指南方面的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      相关资源
      最近更新 更多