首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SAS函数中缺少的操作符在哪里?

SAS函数中缺少的操作符在哪里?
EN

Stack Overflow用户
提问于 2015-11-12 21:00:07
回答 1查看 305关注 0票数 1

我刚从SAS开始,遇到了一些麻烦。我希望从两个数据集中获得观察的数量,并将这些值赋值给现有的全局宏变量。然后我想找到两个中较小的一个。这是我迄今为止的尝试:

代码语言:javascript
运行
复制
%GLOBAL nBlue = 0;
%GLOBAL nRed = 0;

%MACRO GetArmySizes(redData=, blueData=);
/* Takes in 2 Army Datasets, and outputs their respective sizes to nBlue and nRed */

    data _Null_;
        set &blueData nobs=j;
        if _N_ =2 then stop;
        No_of_obs=j;
        call symput("nBlue",j);
    run;

    data _Null_;
        set &redData nobs=j;
        if _N_ =2 then stop;
        No_of_obs=j;
        call symput("nRed",j);
    run;
    %put &nBlue;
    %put &nRed;
%MEND;

%put &nBlue; /* outputs 70 here */
%put &nRed; /* outputs 100 here */

%put %EVAL(min(1,5));

%GetArmySizes(redData=redTeam1, blueData=blueTeam); /* outputs 70\n100 here */

%put &nBlue; /* outputs 70 here */
%put &nRed; /* outputs 100 here */

%MACRO PrepareOneVOneArmies(redData=,numRed=,blueData=,numBlue=);
/* Takes in two army data sets and their sizes, and outputs two new army
   data sets with the same number of observations */

    %let smallArmy = %eval(min(&numRed,&numBlue));
    %put &smallArmy;

    %local numOneVOne;
    %let numOneVOne = %eval(&smallArmy-%Eval(&nBlue - &nRed));
    %put &numOneVOne;

    data redOneVOne; set &redData (obs=&numOneVOne);
    run;

    data blueOneVOne; set &blueData (obs=&numOneVOne);
    run;
%MEND;

%PrepareOneVOneArmies(redData=redTeam1,numRed=&nRed,blueData=blueTeam,numBlue=&nBlue); 
/* stops executing when program gets to  %let smallArmy =... */

redTeam1是一个有100个观测的数据集,blueTeam有70个观测值。

现在我遇到了这样的问题:每当我调用函数"Min“时,我就得到:

“错误:表达式中找不到必需的操作符: min(1,5)”

错误:表达式中找不到所需的操作符:min(100,70)

我遗漏了什么?

"Min“似乎是一个很简单的函数。此外,如果有关系,我正在使用大学版的SAS。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 21:19:16

在使用宏语言中的函数时,需要用%SYSFUNC()包装函数。这有助于sas从一个可能是min的单词来描述,而不是对实际函数的引用。

代码语言:javascript
运行
复制
%put %sysfunc(min(1,5));

与您的问题无关,但对于获取数据集的大小而言,读取完整数据集是一种效率低下的方法。考虑使用字典表(SASHELP.VTABLE)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33681258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档