Re: Counting Categories

• To: mathgroup at smc.vnet.net
• Subject: [mg96890] Re: [mg96798] Counting Categories
• From: DrMajorBob <btreat1 at austin.rr.com>
• Date: Thu, 26 Feb 2009 08:02:06 -0500 (EST)
• References: <200902250903.EAA15666@smc.vnet.net>

```If the lists are large, I suspect Tally will be fastest. In that case, you
can get the contingency table this way:

colors = {red, yellow, green, blue};
sizes = {small, medium, large};
randomColor := RandomChoice@colors
randomSize := RandomChoice@sizes
pairs = Table[{randomColor, randomSize}, {50}];

Clear[count]
count[_] = 0;
Replace[Tally[pairs], {x_List, c_Integer} :> (count[x] = c), 1];
Table[count@{color, size}, {color, colors}, {size, sizes}]

{{5, 6, 5}, {3, 4, 5}, {5, 4, 6}, {4, 3, 0}}

The "count" function acts much like a sparse array here, without
SparseArray's many limitations.

Bobby

On Wed, 25 Feb 2009 14:50:11 -0600, Gregory Lypny
<gregory.lypny at videotron.ca> wrote:

> colors = {red, yellow, green, blue};
> sizes = {small, medium, large};
> randomColor := RandomChoice@colors
> randomSize := RandomChoice@sizes
> pairs = Table[{randomColor, randomSize}, {50}];
>  Partition[Count[pairs, #] & /@ Tuples[{colors, sizes}], Length@sizes]
>  {{5, 3, 3}, {3, 6, 3}, {8, 1, 2}, {5, 4, 7}}
>  or
>  Apply[Count[pairs, {##}, 1] &, Outer[List, colors, sizes], {2}]

--
DrMajorBob at longhorns.com

```

• Prev by Date: Re: Map and functional constructs to replace iterative statements
• Next by Date: Re: Map and functional constructs to replace iterative statements
• Previous by thread: Re: Counting Categories
• Next by thread: Re: Counting Categories