FAQ > 金融建模 > 建模问题 > 数组操作

Q:如何修改数组的列名(列下标)    

  • A:修改列名,方法很多。可以使用renamefield, reindex2/ reindex,类SQL或者矩阵,其各类方法应用场景如下:
    以下所有范例中的案例数据:

    data:=select ['stockid'],['date'],['close'],['vol']
       from markettable datekey 20181201T to 20181206T of 'SZ000002' end;

    范例1:--单个列名的更改:将'date'更改为'日期'
    //方法一:renamefield
       renamefield(data,'date','日期');
       return data;
    //方法二:reindex
     reindex(data,nil,array('date':'日期'));
       return data;

    范例2:--批量修改列名:修改为自增序列
    //方法一:类SQL
    return select selectopt(8)* from data end;
    //注:该用法同时更改了行标为自增序列
    //方法二:reindex2
    return reindex2(data,0);

    范例3:--批量修改列名:批量修改为指定列名
    names:=array('代码','日期','收盘','成交量');

    //方法一:矩阵重构
    tmp:=nils(length(data),names);
    tmp[:,:]:=data[:,:];
    return tmp;

    //方法二:reindex
    //重点:需将names变成array('stockid':'代码','date':'日期','close':'收盘','vol':'成交量')
    cArr:=mcols(data,1);
    mc:=array();
    for i:=0 to length(cArr)-1 do
      mc[cArr[i]]:=names[i];
    reindex(data,nil,mc);
    return data;