[R] Extract data

David Winsemius dwinsemius at comcast.net
Thu Jan 6 16:53:17 CET 2011


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