微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用嵌套循环多次重复一个函数

如何解决使用嵌套循环多次重复一个函数

您好,我是一名相当新的 SAS 程序员,正在尝试使用嵌套 do 循环来执行减法函数。目的是使用 1 次循环从 b_1 中减去变量 a_1 到 a_5,然后对所有 a_ 变量(a_1 到 a_4)重复该过程。 我还需要考虑缺失的数据,我目前使用的代码将所有值都作为缺失值。

代码

data test1;
  set test;

  array b [4] b_1 - b_4;
  array c [4] c_1 - c_4;
  array a [5] a_1 - a_5;

  do j=1 to j=4;

    c_j=0;
    if not missing (b_j) then do i = 1 to 5;
      c_j = (0 le (b_j- a (i)) le 30);
       
      if c_j = 1 then leave;
    end;

    if (a_1 - a_5) | b_j = . then c_j = .;
    if c_j=1 then c_j=year(b_j);

  end;

  drop i j;
run;

解决方法

要索引到数组中,请使用 array_name[index] 而不是 array_name_index

if not missing( b[j] ) then 

请注意,您不需要使用方括号:您也可以使用大括号 b{j} 或正则括号 b(j)

do 循环永远不会执行,因为 0 的上限小于起始值 1。表达式 j=4 的值要么为真 (1),要么为假 (0),具体取决于J 的值,并且在确定上限时 J 不可能得到 4 的值。要将 J 从 1 迭代到 4,请使用:

do j=1 to 4;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。