FAQ > 金融建模 > 应用案例 > 数据处理

Q:将月线数据转换成行为年,列为每月数据的展示方式    

  • A:实现:将月线数据转换成行为年,列为每月数据的展示方式
    //数据demo,产生"截止日"、"沪深300"、"大盘"、"小盘"共四列
      setsysparam(pn_cycle(),cy_month());
      setsysparam(pn_stock(),"SH000300");
      setsysparam(pn_date(),20250630T);
      t:= Nday(54,"截止日",datetostr(sp_time()),
            "沪深300",stockzf3(),
            "大盘",spec(stockzf3(),"SH000016"),
            "小盘",spec(stockzf3(),"SH000852"));
    //--数据处理--月份转成列
      mc:=mcols(t,1) minus array("截止日"); //多级表头展开
      //根据截止日产生年与月
      t:=select *,yearof(strtodate(["截止日"])) as "年份",monthof(strtodate(["截止日"])) as "月份" from t end;
      //按月横向存放每年的数值
      rt:=array();
      for s,v in mc do
      begin
       for i:=0 to length(t)-1 do
        rt[t[i,"年份"],v$"@"$t[i,"月份"]$"月"]:=t[i,v];
      end;
      //--若需要产针年份存放到第一列中,则放开下面这一行代码
      //rt:= select thisrowIndex as "年份",* from rt order by thisrowIndex end;
      return rt;

    效果如下: