Dealing with Missing Values ​​in Deedle Time Series in F # (2)

This question is related to Dealing with Missing Values ​​in Deedle Time Series in F # (1)

Suppose I have Series<'K,'T opt>

with some missing values

For example, I got the series

 series4;;
 val it : Series<int,int opt> =
 1 -> 1         
 2 -> 2         
 3 -> 3         
 4 -> <missing> 

      

I could get it like this:

 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

      

However, in Deedle, if you do

let series1_plus_2 = series1+series2

val series1_plus_2 : Series<int,int> =
1 -> 3         
2 -> 4         
3 -> 4         
4 -> <missing> 

      

you can see that the type Series<int,int>

also naturally allows values ​​to be skipped. And this seems like a natural way to use functions in Deedle that handle missing values

So my question is asked series4 of type Series<int,int opt>

, how do I return a series with "same" values, but type Series<int,int>

????

Remarkable that strange things are happening

for example Series.dropMissing

does not have expected behavior when applied to series 4

Series.dropMissing series4;;
 val it : Series<int,int opt> =
 1 -> 1         
 2 -> 2         
 3 -> 3         
 4 -> <missing> 

      

it does NOT drop the missing value !!

+2


source to share


1 answer


The main problem is that int opt

there is no standard Deedle way to handle missing values. There is series4

no meaning in , but it matters OptionalValue.Missing

. You can convert Series<int, int opt>

to Series<int, int>

, for example, like this: let series4' = series4 |> Series.mapAll (fun _ v -> v |> Option.bind OptionalValue.asOption)



+3


source







All Articles