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

sas中字符数组变量的最小值

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

    我正在编写一个代码,在这个代码中,我一直在努力寻找字符字符串中的最小值,请参见下面的示例代码:

    data a;
    array a(2) $ a1 a2;
    array b(2) b1 b2;
    a1='1,2,3,';a2= '1,3,4';
    i=0;
    do until (i>=2);
    i=i+1;
    b(i)=min(strip(tranwrd(a(i),","," ")));
    end;
    
    run;
    

    注:第32行第10列的数字数据“1 3 4”无效。

    你能建议一种方法来获得这种字符串数组的最小值吗。

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

    不能将字符串表达式传递给MIN()函数,使其像在编译时传递数值常量一样运行。通过使用 resolve() 功能。

    do i=1 to dim(a);
      b(i)=input(resolve(cats('%sysfunc(min(',a(i),'))')),32.);
    end;
    

    但是,只解析字符串并将其转换为代码中的数字可能更清晰、更容易。

    do i=1 to dim(a);
      do j=1 to countw(a(i),',');
        b(i)=min(b(i),input(scan(a(i),j,','),32.));
      end;
    end;
    
        2
  •  1
  •   user667489    6 年前

    你可以这样做:

    data _null_;
      params = '1,2,3,';
      do i = 1 to count(params, ',') + 1;
        min_param = min(min_param,scan(params,i,','));
      end;
      put _all_;
    run;
    

    我相信你有能力设置数组等来对多个变量做同样的事情。