先建个表产生模拟数据:
date=2022.01.01 + 0..31 ret1=rand(1.0,size(date)) ret2=rand(1.0,size(date)) tb=table(date,ret1,ret2)
表数据如下:
date ret1 ret2 2022.01.01 0.1204 0.8332 2022.01.02 0.6071 0.0439 2022.01.03 0.8292 0.6409 2022.01.04 0.9989 0.0281 2022.01.05 0.779 0.4947 2022.01.06 0.8342 0.4477 2022.01.07 0.9014 0.0134 2022.01.08 0.5417 0.2441 2022.01.09 0.4288 0.0143 2022.01.10 0.4791 0.9859 2022.01.11 0.9654 0.2847 2022.01.12 0.4454 0.8206 2022.01.13 0.8525 0.8255 2022.01.14 0.0861 0.0172 2022.01.15 0.7788 0.2248 2022.01.16 0.2623 0.8577 2022.01.17 0.1601 0.9486 2022.01.18 0.1889 0.7622 2022.01.19 0.8978 0.1683 2022.01.20 0.1762 0.4089 2022.01.21 0.1804 0.8442 2022.01.22 0.4337 0.3034 2022.01.23 0.3838 0.6771 2022.01.24 0.778 0.2225 2022.01.25 0.0916 0.4198 2022.01.26 0.5623 0.2997 2022.01.27 0.8017 0.0754 2022.01.28 0.5301 0.1132 2022.01.29 0.8758 0.934 2022.01.30 0.1143 0.3779 2022.01.31 0.9446 0.5951 2022.02.01 0.1547 0.7291
用imax等自定义函数,示例如下:
def f(x,y,dates){ return table(y as col,min(x) as min,max(x) as max,dates[imin(x)] as imin,dates[imax(x)] as imax) } unionAll(peach(f{,,tb.date},tb.values()[1:],colNames(tb)[1:]),0)
执行后返回结果如下:
col min max imin imax ret1 0.0861 0.9989 2022.01.14 2022.01.04 ret2 0.0134 0.9859 2022.01.07 2022.01.10