Skip to content
Back to formatted view

Raw Message

Message-ID: <71E401F6-E349-4D73-A6B5-DA7D7EEFD848@comcast.net>
Date: 2011-01-06T15:53:17Z
From: David Winsemius
Subject: Extract data
In-Reply-To: <061B1B8E-7121-4F16-B357-48EF59816077@st-andrews.ac.uk>

On Jan 6, 2011, at 6:36 AM, Chris Mcowen wrote:

> Dear List,
>
> I have a data frame called trait with roughly 800 species in, each  
> species have 15 columns of information:
>
> Species		1	2	3	etc..
> a			t	y	h
> b			f	j	u
> c			r	y	u
>
> etc..
>
>
> I then have another data frame called com with the composition of  
> species in each region, there are 506 different communities:
>
> community	species
> NA1102		a
> NA1102		c
> NA0402		b
> NA0402		c
> AT1302		a
> AT1302		b
>
> etc..
>
>
> What i want to do is extract the information held in the first data  
> frame for each community and save this as a new data frame.

 > tapply(comm.info$species, comm.info$community, c)
$AT1302
[1] 1 2

$NA0402
[1] 2 3

$NA1102
[1] 1 3

 > lapply( tapply(comm.info$species, comm.info$community, c),  
function(x){ sp.info[x, ]} )
$AT1302
   Species X1 X2 X3
1       a  t  y  h
2       b  f  j  u

$NA0402
   Species X1 X2 X3
2       b  f  j  u
3       c  r  y  u

$NA1102
   Species X1 X2 X3
1       a  t  y  h
3       c  r  y  u

Might have looked more compact if I had assigned the output of tapply  
to an intermediate list:

comm.sp <- tapply(comm.info$species, comm.info$community, c)
lapply( comm.sp , function(x){ sp.info[x, ]} )



>
> Resulting in : -
>
> community_NA1102	
>
> a			t	y	h
> c			r	y	u
>
> community_NA0402	
>
> b			f	j	u
> c			r	y	u
>
> Thanks in advance for any suggestions / code.



David Winsemius, MD
West Hartford, CT