【问题标题】:Using nested loops to repeat a function multiple times使用嵌套循环多次重复一个函数
【发布时间】:2021-06-14 08:30:17
【问题描述】:

您好,我是一个相当新的 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;

【问题讨论】:

  • 请显示一些示例输入以及该输入的预期结果。

标签: arrays sas nested-loops data-analysis do-loops


【解决方案1】:

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

if not missing( b[j] ) then 

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

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

do j=1 to 4;

【讨论】:

  • 非常感谢!我得到了我想要的结果。
猜你喜欢
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2014-05-20
  • 2018-09-30
  • 2018-10-28
相关资源
最近更新 更多