Re: averaging sublists of different lengths [CORRECTION]
- To: mathgroup at smc.vnet.net
- Subject: [mg75488] Re: [mg75466] averaging sublists of different lengths [CORRECTION]
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Thu, 3 May 2007 03:39:42 -0400 (EDT)
- Reply-to: hanlonr at cox.net
My first response unnecessarily restricted the data to being numeric. This will also handle symbolic data. colMeans[data_] := Module[{n=Max[Length/@data], z}, Mean[DeleteCases[#, z]]&/@ Transpose[(PadRight[#, n, z]&/@data)]]; Bob Hanlon ---- Bob Hanlon <hanlonr at cox.net> wrote: > colMeans[data_]:=Module[{n=Max[Length/@data],z}, > Mean[Cases[#,_?NumericQ]]&/@ > Transpose[(PadRight[#,n,z]&/@data)]]; > > data={{70,66,64,68,64,56,68,78,62,68,84}, > {70,64,64,56,66,56,62,64,66,88,54,72}, > {58,54,54,60,72,70,62,68,74,76,70}, > {66,56,60,64,56,62,68,58,58,58,68,76,62,76,66,64, > 88,56},{56,64,72,72,70,62,76,76,76,76,86,80,100}, > {60,60,70,68,60,60,50,56,60,70,62,68,88,84,82}, > {54,66,72,62,70,66,70,56}, > {60,60,60,62,74,80,70}, > {54,62,64,72,76,74}, > {66,74,70,80,54,54,64}, > {72,66,60,52,52,66,66,58,60,66}}; > > colMeans[data] > > {686/11, 692/11, 710/11, 716/11, 714/11, 706/11, 328/5, 257/4, 456/7, 502/7, 212/3, 74, 250/3, 80, 74, 64, 88, > 56} > > > Bob Hanlon > > ---- dantimatter <dantimatter at gmail.com> wrote: > > > > Hello all, > > > > I have a list of lists like this: > > > > {{70, 66, 64, 68, 64, 56, 68, 78, 62, 68, 84}, {70, 64, 64, 56, 66, > > 56, 62, > > 64, 66, 88, 54, 72}, {58, 54, 54, 60, 72, 70, 62, 68, 74, 76, 70}, > > {66, > > 56, 60, 64, 56, 62, 68, 58, 58, 58, 68, 76, 62, 76, 66, 64, 88, > > 56}, {56, > > 64, 72, 72, 70, 62, 76, 76, 76, 76, 86, 80, 100}, {60, 60, 70, 68, > > 60, 60, > > 50, 56, 60, 70, 62, 68, 88, 84, 82}, {54, 66, 72, 62, 70, 66, > > 70, > > 56}, {60, 60, 60, 62, 74, 80, 70}, {54, 62, 64, 72, 76, 74}, {66, > > 74, 70, > > 80, 54, 54, 64}, {72, 66, 60, 52, 52, 66, 66, 58, 60, 66}} > > > > What I'd really like is the average all the 1st values, 2nd values, > > etc, but I'm having trouble figuring out how to deal with the fact > > that the lists are not all the same length. Is there a way to drop > > the sublists as they run out of points to add to the average, i.e. if > > I want the average of all the nth values, but Length[shortSublist] < > > n, can I somehow drop shortSublist and then calculate the average from > > the other sublists? > > > > Also, the Mean[] function requires more than one data point, but I'd > > still like to extract out the values for which there is only one data > > point. Is there a way to do this? > > > > Thanks! > > dan > >