RE: Selecting by first element of each list
- To: mathgroup at smc.vnet.net
- Subject: [mg48226] RE: [mg48130] Selecting by first element of each list
- From: "David Park" <djmp at earthlink.net>
- Date: Tue, 18 May 2004 04:17:26 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Cliff, Use Split. The only question is how you want to sort the records. You may need a sort test, or you may need to pad the short records. Here is an example with an unsorted list. testlist = {{2, 3, 4, 5, 77}, {3, 45, 67, 77, 12}, {3, 5, 6, 7, 8, 0}, {3, 4, 7, 8, 90, 6}, {2, 4, 5, 66, 77}}; Split[Sort[testlist], Part[#1, 1] == Part[#2, 1] &] {{{2, 3, 4, 5, 77}, {2, 4, 5, 66, 77}}, {{3, 45, 67, 77, 12}, {3, 4, 7, 8, 90, 6}, {3, 5, 6, 7, 8, 0}}} David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: camartin at snet.net [mailto:camartin at snet.net] To: mathgroup at smc.vnet.net Hi, I'm trying to learn to handle a flat file kind of database using Mathematica. An example is the list of lists below: {{2,3,4,5,77},{2,4,5,66,77},{3,4,7,8,90,6},{3,5,6,7,8,0},{3,45,67,77,12}} It's actually more complicated than this but good enough for illustrative purposes. The first element in each list is actually an identifier, like an account number. I want to create a list of lists with each account, that is, {{{2,3,4,5,77},{2,4,5,66,77}}, {{3,4,7,8,90,6},{3,5,6,7,8,0},{3,45,67,77,12}}}. When I use Select with an anonymous function such as Select[list1,#1[[1]] = = #2[[1]]&] I get an error because it stops (of course) after the first two lists. I get the right grouping for the first list but it doesn't finish. I don't understand how to use the anonymous function to go through my list (it's got several thousand entries) and select and group by the first element in each group. I've been through the archive but nothing there quite helps. I would appreciate some direction. Thanks Cliff