Sas 计算中使用的提示变量或宏变量

Sas 计算中使用的提示变量或宏变量,sas,sas-macro,Sas,Sas Macro,我在EG中使用提示符管理器创建了一个数值变量 这个变量被称为HYr,表示我正在提取的数据的最高年份 运行程序时,我根据最高年份创建了4个新变量,这就是我遇到的问题 我有以下资料: %Let Yr2 = &HYr. - 1; %Let Yr3 = "&HYr." - 2; %Let Yr4 = &HYr. - 3; %Let Yr5 = '&HYr.' - 4; 我试图从年份中减去该值,新变量将用于确定正在提取的日期范围。我正在尝试一些事情,并在这个过程中学

我在EG中使用提示符管理器创建了一个数值变量

这个变量被称为HYr,表示我正在提取的数据的最高年份

运行程序时,我根据最高年份创建了4个新变量,这就是我遇到的问题

我有以下资料:

%Let Yr2 = &HYr. - 1;

%Let Yr3 = "&HYr." - 2;

%Let Yr4 = &HYr. - 3;

%Let Yr5 = '&HYr.' - 4;
我试图从年份中减去该值,新变量将用于确定正在提取的日期范围。我正在尝试一些事情,并在这个过程中学习,但我仍然被卡住了

我知道这可能只是一个简单的语法问题,如果有足够的时间,我可能会得到它,但我办公室里没有人比我有更好的SAS技能,这并不多

提前感谢。

使用
%EVAL()
对整数和宏变量进行计算

%let HYR = 2018;
%Let Yr2 = %eval(&HYr. - 1);
%Let Yr5 = %eval(&HYr. - 4);

%put HYR: &hyr;
%put YR2: &yr2.;
%put YR5: &yr5.;
编辑:如果您试图进行包含小数的其他计算,则需要使用
%SYSEVALF

%let HYR = 2018;
%Let Yr2 = %sysevalf(&HYr. - 0.1);
%Let Yr5 = %sysevalf(&HYr. - 0.4);

%put HYR: &hyr;
%put YR2: &yr2.;
%put YR5: &yr5.;

我想知道为什么要投否决票?这是一个相当基本的问题,但在我看来却是一个合理的问题。让我们欢迎尚未成为强大程序员的新用户——他们是最需要帮助的人!我几乎倾向于用另一种方式来关闭它(关闭那个而不是这个);由于另一个有太多额外的东西,所以这个答案似乎比如何使用%eval更“干净”。你怎么看@reeza?@joe我不知道这是可能的:D但是是的,关闭另一个对我来说是有意义的。不确定在这方面如何评价问题/答案的质量。@Reeza如果一个问题好得多,并且/或者有更好的答案,并且通常更合适,那么这是合适的。我可以用我的手来做这件事(我现在相信汤姆也可以)。但是你也可以这样做,只需要5票,直到你拿到金徽章。如果你需要执行浮点运算,还可以使用%sysevalf()。