[R] Extract data

Chris Mcowen chrismcowen at gmail.com
Thu Jan 6 16:55:42 CET 2011


Dear David,

Thats great, thanks very much for the help, much appreciated.


On 6 Jan 2011, at 15:53, David Winsemius wrote:


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



More information about the R-help mailing list