循环年份数据

时间:2018-01-17 18:47:07

标签: sas

我有以下问题。我想计算包含全年的数据中每个月的价值。但我真的不想将整月导出到单独的表格中。

有没有办法让它适用于for循环或其他任何一个?

data BD.data2017r; 
  retain Open; 
  retain Close;
  set BD.data2017 end=eof curobs=observ1;
  if observ1 = 1 then do; 
    Open = Close; 
  end; 
  if eof then do; 
    Close = Close; 
  end; 
  absout = Close - Open; 
  relative = (Close - Open)/Open; 
run;

2 个答案:

答案 0 :(得分:2)

执行直到循环可以处理分组并维护标记值,而无需保留变量或显式输出:

protected function credentials(Request $request)
    {
        $credentials = $request->only($this->username(), 'password');
        $credentials['confirmed'] = 1;
        return $credentials;
    }

执行相同操作的非do循环方法需要保留开放值并需要显式输出语句。

data have;
  do date = '01jan2015'd to '31dec2016'd;
    month = intnx('month',date,0);
    close + 1;
    output;
  end;
  format date yymmdd10. month yymmd7.;
run;

data want;
  do until (last.month);
    set have;
    by month;
    if first.month then open = close;
  end;

  range = close - open;
  relative = range / open;

  keep month open close range relative;
run;

答案 1 :(得分:1)

假设数据按日期排序,您可以使用BY组处理(by month_var),first.month_varlast.month_var作为标记,指示每个BY的开始和结束小组(即月份)。

您还需要在output;区块中每个月明确if last.month_var一行。