MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A list based table join?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg112972] Re: A list based table join?
  • From: Bill Rowe <readnews at sbcglobal.net>
  • Date: Fri, 8 Oct 2010 04:50:38 -0400 (EDT)

On 10/7/10 at 3:39 AM, leoditolaghi at gmail.com (Leo Ditolaghi) wrote:

>If I have two lists, how do I determine the indices at which the 1st
>list elements are matched by the elements of the second, and then
>use these matching indices to extract corresponding columns in the
>1st list (sort of a simulated database join)? I.e.,

>x = {{"hello", 27},
>{"bye", 30},
>{"hello", 54},
>{"seeya", 100},
>{"hi", 9}}

>y = {"hello", "hi"}

>where x is the source table, and y is the select criteria (so to
>speak.)

>I wish to produce z, where y defines which elements of x to extract:

>z = {27,54,9}

Here are a few ways to get the result you want:

In[3]:= x = {{"hello", 27}, {"bye", 30}, {"hello", 54}, {"seeya",
     100}, {"hi", 9}};
y = {"hello", "hi"};

In[5]:= Cases[x, {_?(MemberQ[y, #] &), _}][[All, 2]]

Out[5]= {27,54,9}

In[6]:= Select[x, MemberQ[y, First[#]] &][[All, 2]]

Out[6]= {27,54,9}

In[7]:= Cases[x, {Alternatives @@ y, _}][[All, 2]]

Out[7]= {27,54,9}



  • Prev by Date: C-pointers from Mathematica
  • Next by Date: Re: A list based table join?
  • Previous by thread: Re: A list based table join?
  • Next by thread: Re: A list based table join?