代码之家  ›  专栏  ›  技术社区  ›  Rhea

数组中最后一个非缺失的var索引-SAS

  •  0
  • Rhea  · 技术社区  · 6 年前

    data a;
    array a(4) a1 - a5;
    a1=1 ;a3=2;
    run;
    

    我希望能够在代码中确定a3是最后一个非空变量。 谢谢!

    2 回复  |  直到 6 年前
        1
  •  2
  •   RuneS    6 年前

    试试这个:这给出了最后一个非缺失变量范围内的位置。从数组的最后一个元素循环到第一个元素,检查它是否丢失。保存位置并保留循环(如果没有丢失)。

    data a;
        array a(*) a1 - a5;
        a1=1 ;a3=2;
        do i=dim(a) to 1 by -1;
            if not missing(a{i}) then do;
                Last_not_missing=i;
                leave;
            end;
        end;
        drop i;
    run;
    
        2
  •  3
  •   user667489    6 年前

    如果以相反的顺序定义数组,可以使用 coalesce + whichn

    data a;
    array a(5) a5 - a1;
    a1=1 ;a3=2;
    want = whichn(coalesce(of a[*]), of a[*]);
    run;