Re: BinLists in Array

*To*: mathgroup at smc.vnet.net*Subject*: [mg111597] Re: BinLists in Array*From*: Darren Glosemeyer <darreng at wolfram.com>*Date*: Sat, 7 Aug 2010 01:30:01 -0400 (EDT)

Murta wrote: > Hello All > > I Would like to split this array: l={{1, 0}, {1, 1}, {1, 2}, {2, > 3}, {2, 4}}, by the second element of each group, to group what are > between 0-2, 2-4,4-6 and so on (just the second element) > Using BinLists look like a good idea. I get my desirable result > with: > BinLists[{{1, 0}, {1, 1}, {1, 2}, {2, 3}, {2, 4}}, {0, 10, 10}, > {0, 10, 2}] > > But I would like to don't have to put any struction to the first > element (the "{0, 10, 10}" information) > How I can ignore it? I tried something like > BinLists[{{1, 0}, {1, 1}, {1, 2}, {2, 3}, {2, 4}},None, {0, 10, > 2}] > BinLists[{{1, 0}, {1, 1}, {1, 2}, {2, 3}, {2, 4}},Automatic, > {0, 10, 2}] > BinLists[{{1, 0}, {1, 1}, {1, 2}, {2, 3}, {2, 4}},All, {0, 10, > 2}] > But isn't the way. > > Thanks in advande > Murta > I assume the main issue is not having to look at the data to determine what the range should be to capture all the data values in that particular coordinate. You could use the allSpec function that follows to construct a specification that captures all values in the i^th column of the data without manually constructing it. In[1]:= allSpec[dataset_, i_] := With[{min = Min[dataset[[All, i]]], max = Max[dataset[[All, i]]]}, {min - 1, max + 1, max - min + 2}] In[2]:= data = {{1, 0}, {1, 1}, {1, 2}, {2, 3}, {2, 4}}; In[3]:= BinLists[data, allSpec[data, 1], {0, 10, 2}] Out[3]= {{{{1, 0}, {1, 1}}, {{1, 2}, {2, 3}}, {{2, 4}}, {}, {}}} Darren Glosemeyer Wolfram Research