Sas 用数组水平求和

Sas 用数组水平求和,sas,Sas,尝试使用以下代码水平求和并创建一个虚拟总数。因此,数组中的每个变量都是一个伪标志。我想计算每行虚拟标志的数量 data rep; set clean; array missU (9) util_92013 util_32014 util_22014 util_72013 util_82013 util_12014 util_42014 util_122013 util_62014; do i = 1 to 9; totalU = sum(o

尝试使用以下代码水平求和并创建一个虚拟总数。因此,数组中的每个变量都是一个伪标志。我想计算每行虚拟标志的数量

data rep;
    set clean;
    array missU (9) util_92013  util_32014  util_22014  util_72013  util_82013  util_12014  util_42014  util_122013 util_62014; 
    do i = 1 to 9;
        totalU = sum(of missU(i));
    end;
    drop i;
run;
我继续得到
注意:缺少的值是由于对缺少的值执行操作而生成的。

您不需要循环

data rep;
  set clean;
  array missU ... ;  
  totalU = sum(of missU[*],0);
run;

正如user667489在评论中指出的那样,在sum函数中添加一个零可以避免在缺少所有标志(如果需要)时生成一个缺少的值。

谢谢,我以前尝试过类似的方法,但是missU[*]导致了一个错误。我最初有一个名为“miss_”的数组。“u”会导致问题吗?不会,u在SAS中是一个完全正常的字符。@Joe-sum在所有输入都缺失时返回缺失的值。添加零可以解决此行为。