【问题标题】:initialize multiple variables in one line SAS在一行 SAS 中初始化多个变量
【发布时间】:2016-07-07 15:40:10
【问题描述】:

这里是新的 SAS 程序员。在 .NET 中,我们可以在一行中为多个变量分配一个值,如下所示:

var1 = var2 = var3 = 0;

在 SAS 中是否有类似的语法?

【问题讨论】:

  • 你不需要初始化 SAS 变量,你想做什么需要初始化?如果求和,请改用 SUM() 函数,该函数将忽略缺失值或缺少初始化。

标签: variables initialization sas assign


【解决方案1】:

没有。

但是还有其他方法可以完成这类事情。

最常见的是使用 ARRAY 和 DO 循环。

array varlist var1 var2 var3 ;
do i=1 to dim(varlist);
  varlist(i)=0;
end;

您可以使用 ARRAY 语句来初始化变量。

array varlist var1 var2 var3 (3*0);

但这仅适用于数据步骤第一次迭代的初始值。

或者你也可以有创意,使用宏函数来生成代码。

%sysfunc(tranwrd(var1|var2|var3|,|,%str(=0;)))

如果要将值设置为缺失,可以使用 CALL MISSING() 函数。

call missing(of var1 var2 var3);

【讨论】:

    【解决方案2】:

    据我所知,SAS 不支持多重赋值。

    SAS 将var1 = var2 = var3 = 0; 计算为var1 = (var2 = var3 = 0);,如果var2 = var3 = 0 则返回var1 的值1,否则返回0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2018-07-02
      • 1970-01-01
      • 2013-03-04
      相关资源
      最近更新 更多