使用F#中的Deedle时间序列中的缺失值(3)

时间:2017-05-18 01:13:52

标签: f# series missing-data deedle

这是Working with missing values in Deedle Time Series in F# (2)

的另一个后续行动

我已将此函数写入map2系列,当缺少任何输入时返回缺失值。

let map2series (f:'T1->'T2->'R)(series1:Series<'K,'T1 opt>)(series2:Series<'K,'T2 opt>):Series<'K,'R opt>=
     let S = series1.Zip(series2,JoinKind.Outer) //Series<'K,('T1 opt opt * 'T2 opt opt)>

     S |> Series.mapValues (fun (a,b) -> match (a,b) with 
                                          | (OptionalValue.Present(a'), OptionalValue.Present(b')) -> OptionalValue.map2 f a' b'
                                          | _ -> OptionalValue.Missing)

因为Series<'K,'T opt>在使用.Zip.Join方法后自然出现在Deedle中。

但是,如前所述,Series<'K,'V> 已经支持缺失值,所以我想重写上面的函数,基本上会做同样的事情,除了它需要{{ 1}}作为输入

Series<'K,'V>

然而,这不起作用,当缺少一个值时,我在第二个联合案例中没有正确的语法......

基本上不是最后一个let map2series1 (f:'T1->'T2->'R)(series1:Series<'K,'T1>)(series2:Series<'K,'T2>):Series<'K,'R>= let S = series1.Zip(series2,JoinKind.Outer) //Series<'K,('T1 opt * 'T2 opt)> S |> Series.mapValues (fun (a,b) -> match (a,b) with | (OptionalValue.Present(a'), OptionalValue.Present(b')) -> f a' b' | _ -> None) ,我需要指定一个与None对应的值,但我无法找到它。

我也看了类似的东西 <missing>但无法找到正确的表达

1 个答案:

答案 0 :(得分:1)

你可以这样做:

{{1}}