Re: Construcing correlation matrix from time-ordered list
- To: mathgroup at smc.vnet.net
- Subject: [mg54748] Re: Construcing correlation matrix from time-ordered list
- From: Peter Pein <petsie at arcor.de>
- Date: Mon, 28 Feb 2005 03:28:38 -0500 (EST)
- References: <cvrqlq$p65$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Adam Getchell wrote: > Hello all, > > I have time series data (a lot of it) in a format like: > > {{{1897,1,4},40.37`},{{1897,1,5},40.87`},{{1897,1,6},40.95`},{{1897,1,7}, > 40.87`},{{1897,1,8},40.97`},{{1897,1,11},40.75`},{{1897,1,12}, > 41.4`},{{1897,1,13},41.45`},{{1897,1,14},41.79`},{{1897,1,15}, > 42.27`},{{1897,1,18},42.76`},{{1897,1,19},43.25`},{{1897,1,20}, > 42.78`},{{1897,1,21},42.52`},{{1897,1,22},42.42`}} > > ie the year, then the value, for 100+ years. > > I'd like to construct a correlation matrix so that year values become > columns, e.g. > > 1897 1898 > ========== > Value1 Value 1 > Value 2 Value 2 > ... > > From my long list of {{{date1},value1},{{date2},value2}} > > But I'm not yet sure how to proceed. I'm looking at Cases or Select to > apply a function for each year range that will pick out that column. > > Any pointers appreciated. > > --Adam Getchell > > In[1]:= data={{{1897,1,4},40.37`},{{1897,1,5},40.87`},{{1897,1,6},40.95`},{{1897,1,7}, 40.87`},{{1897,1,8},40.97`},{{1897,1,11},40.75`},{{1897,1,12}, 41.4`},{{1897,1,13},41.45`},{{1897,1,14},41.79`},{{1897,1,15}, 42.27`},{{1897,1,18},42.76`},{{1897,1,19},43.25`},{{1897,1,20}, 42.78`},{{1897,1,21},42.52`},{{1897,1,22},42.42`}}; In[2]:= (* just to get two different columns *) data=Join[data,data/.{{1897,x__},v_}\[Rule]{{2005,x},v+1.3}]; In[3]:= (* 1st split into sublists with same year *) spl=Split[data, #1[[1,1]] === #2[[1,1]]&]; (* 2nd Print values as requested *) TableForm[Transpose[Map[Last, spl, {2}]], TableHeadings -> {None, (#1[[1,1,1]] & ) /@ spl}] [output left out because of too many formatting functions] -- Peter Pein Berlin