非空值按一定的规律怎么实现按前值填充?

有date,code,factor_value这三列数据,每一个date、code有一个factor_value的值。对一个code来说,从原始数据出发,希望5行的factor_value值都是相同。例如,2021.01.01一个code有一个因子值,我想让后续2021.01.02-2021.01.05的数据都是2021.01.01的同一个因子值,怎么实现呢?

请先 登录 后评论

1 个回答

mhxiang

可以使用ffill实现前值填充,如下

date=2022.01.01+1..50
factor=1..50*1.0
code =take(`A`B,50)
select date,code,factor,ffill(iif(0..(size(date)-1) in (5*(0..(size(date)/5))),factor,NULL)) from table(date,code,factor) context by code
date       code factor ffill
---------- ---- ------ -----
2022.01.02 A    1      1    
2022.01.04 A    3      1    
2022.01.06 A    5      1    
2022.01.08 A    7      1    
2022.01.10 A    9      1    
2022.01.12 A    11     11   
2022.01.14 A    13     11   
2022.01.16 A    15     11   
2022.01.18 A    17     11   
2022.01.20 A    19     11   
2022.01.22 A    21     21   
2022.01.24 A    23     21   
2022.01.26 A    25     21   
2022.01.28 A    27     21   
2022.01.30 A    29     21   
2022.02.01 A    31     31   
2022.02.03 A    33     31   
2022.02.05 A    35     31   
2022.02.07 A    37     31   
2022.02.09 A    39     31   
2022.02.11 A    41     41   
2022.02.13 A    43     41   
2022.02.15 A    45     41   
2022.02.17 A    47     41   
2022.02.19 A    49     41   
2022.01.03 B    2      2    
2022.01.05 B    4      2    
2022.01.07 B    6      2    
2022.01.09 B    8      2    
2022.01.11 B    10     2    
请先 登录 后评论
  • 1 关注
  • 0 收藏,766 浏览
  • haaha 提出于 2022-11-03 16:25