Re: Re: Using Select with arrays? (Relative newbie)
- To: mathgroup at smc.vnet.net
- Subject: [mg54304] Re: [mg54258] Re: Using Select with arrays? (Relative newbie)
- From: János <janos.lobb at yale.edu>
- Date: Wed, 16 Feb 2005 14:36:37 -0500 (EST)
- References: <200502140317.WAA14058@smc.vnet.net> <200502150250.VAA27328@smc.vnet.net> <opsl80wafhiz9bcq@monster.ma.dl.cox.net>
- Sender: owner-wri-mathgroup at wolfram.com
Bobby, Elegant and fast. I added to my "pearls collection" of mathgroup contributions. I see that I could have used the Listable attribute of Max. So, here is a shorter version, still just with Select. In[25]:= Select[data, #1[[2]] == Max[data[[All, 2]]] && #1[[1]] == 1 & ] Out[25]= {{1, 4, string4, c, d}} Thanks a lot, János P.S. Here is another way with Pick and Map --not as elegant. In[52]:= Pick[data, (#1[[2]] == Max[data[[All, 2]]] && #1[[1]] == 1 & ) /@ data] Out[52]= {{1, 4, string4, c, d}} On Feb 15, 2005, at 12:15 PM, DrBob wrote: > data = {{1, 1, string1, c, d}, > {1, 2, string2, c, d}, > {1, 3, string3, c, d}, > {1, 4, string4, c, d}, > {2, 1, string1, c, d}, > {2, 2, string2, c, d}, > {3, 1, string3, c, d}, > {4, 1, string2, c, d}, > {4, 2, string4, c, d}}; > Cases[data, {1, Max[data[[All,2]]], _, _, _}] > {{1, 4, string4, c, d}} > Bobby > On Mon, 14 Feb 2005 21:50:53 -0500 (EST), János <janos.lobb at yale.edu> > wrote: >> Well, I did not read to the end at first. >> If you want to use Select to select the element which has maximum in >> its #2 location from all those who have 1 in their #1 location, then >> you can do something like: >> In[23]:= >> Select[Select[data, >> #1[[1]] == 1 & ], >> #1[[2]] == Max[ >> Select[data, >> #1[[1]] == 1 & ][[All, >> 2]]] & ] >> Out[23]= >> {{1, 4, string4, c, d}} >> János >> On Feb 13, 2005, at 10:17 PM, Hugo Mallinson wrote: >>> The subject might not be entirely correct, but here is my problem: >>> I have a list of 5-variable data points like >>> data = { >>> {1, 1, string1, c, d} >>> {1, 2, string2, c, d} >>> {1, 3, string3, c, d} >>> {1, 4, string4, c, d} >>> {2, 1, string1, c, d} >>> {2, 2, string2, c, d} >>> {3, 1, string3, c, d} >>> {4, 1, string2, c, d} >>> {4, 2, string4, c, d} >>> } >>> and I want to extract just the points that have 1 (or 2, etc) as >>> their >>> first value. I think I should do something like >>> Select[data, {1, _Integer, _String, _Integer, _Integer}] >>> but that doesn't work. >>> Having done that I need to find the maximum value of #2 for each >>> string, which I presumably do by the same method as above to extract >>> all string1 (or ...2) and then use Map[] and Max[]. I would do this >>> all >>> with For loops (revealing my lack of Mathematica chops :-) ) but I'd >>> really like to learn how to do this sort of extraction in a >>> Mathematica-y way. Any help would be greatly appreciated! >>> Hugo >> ---------------------------------------------- >> Trying to argue with a politician is like lifting up the head of a >> corpse. >> (S. Lem: His Master Voice) > -- > DrBob at bigfoot.com > www.eclecticdreams.net
- References:
- Using Select with arrays? (Relative newbie)
- From: Hugo Mallinson <hfm21@cam.ac.uk>
- Re: Using Select with arrays? (Relative newbie)
- From: János <janos.lobb@yale.edu>
- Using Select with arrays? (Relative newbie)