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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to