处理F#(1)中Deedle时间序列中的缺失值
下面是一个小示例,我想处理series上自定义函数的缺失值 假设我得到了一个级数处理F#(1)中Deedle时间序列中的缺失值,f#,missing-data,deedle,F#,Missing Data,Deedle,下面是一个小示例,我想处理series上自定义函数的缺失值 假设我得到了一个级数 series4;; val it : Series<int,int opt> = 1 -> 1 2 -> 2 3 -> 3 4 -> <missing> 如果我这样做了 Series.mapAll (fun v -> match v with
series4;;
val it : Series<int,int opt> =
1 -> 1
2 -> 2
3 -> 3
4 -> <missing>
如果我这样做了
Series.mapAll (fun v -> match v with
| Some a -> (a>1)
| _-> false) series4
这是失败的
System.Exception:由于早期错误,无法完成操作
错误类型“int option”与类型“int opt”不匹配。看见
同时输入.fsx(4,42)-(4,49)。在4,42
而我希望结果是
val it : Series<int,bool opt> =
1 -> false
2 -> true
3 -> true
4 -> false
val-it:Series=
1->错误
2->正确
3->正确
4->错误
更好的是能够得到这样的结果
val it : Series<int,int opt> =
1 -> false
2 -> true
3 -> true
4 -> <missing>
val-it:Series=
1->错误
2->正确
3->正确
4 ->
正确的语法是什么?理想情况下,如果有一个
值,我希望新系列中的同一个键有一个
值
基本上,我需要在int opt
类型上进行模式匹配
附加问题:Deedle中是否有一些常用操作符(如“>”)的矢量化操作符?
(series1>series2)当两个序列具有相同的键类型时,将返回一个新的布尔(选项?)类型序列
谢谢您可以这样做:
let series1 = Series.ofObservations [(1,1);(2,2);(3,3)]
let series2 = Series.ofObservations [(1,2);(2,2);(3,1);(4,4)]
let series3 = series1.Zip(series2,JoinKind.Outer);;
let series4 = series3 |> Series.mapValues fst
let series5 =
series4
|> Series.mapValues(OptionalValue.map(fun x -> x > 1))
您可以阅读
系列中的模块OptionalValue
。mapAll
似乎接受一个返回选项的函数
,因此我认为您需要在函数中返回一些(a>1)
和一些false
。