How to pair two Timeseries?

Hello

I Have 2 tables with the folloing structure:

To calculate things like correlation, I want to create an new paired table like this:

I tried diffrent things, for example:

Timing[
 d = Intersection[smi[[;; , 1]], abb[[;; , 1]]];
 p1 = Flatten[Position[Map[MemberQ[d, #] &, smi[[;; , 1]]], True]];
 p2 = Flatten[Position[Map[MemberQ[d, #] &, abb[[;; , 1]]], True]];
 paired = Transpose[{d, smi[[p1, 2]], abb[[p2, 2]]}];
 ]

The Problem is, that this is really slow (4 seconds for about 6000 dates). I think there must be a simple and much faster solution than mine. I would be happy for a little help!

Juerg,

A couple of suggestions… If your goal is specifically just correlation information, Mathematica has some built in functions for this. Check out the documentation for Correlation and CorrelationTest for starters.

If you’re really interested in manipulating the data structures, then there are many approaches, but I don’t know which ones would be most performant without benchmarking each one. The first approach that comes to my mind would be to use Associations. Check out the documentation for Association, KeyIntersection, and Merge.

Hi Eric

Thanks a lot for the hint. With Assosiation and KeyIntersection I get the wished result in 0.03 Seconds, so that I can work with this now!

Kind regards!

Excellent!