Dear all,
how can I, with R, transform a presence-only table (with the names of
the species (1st column), the lat information of the sites (2nd column)
and the lon information of the sites (3rd column)) into a
presence-absence (0/1) matrix of species occurrences across sites, as
given in the below example?
Thanks a lot for your help!
Christian
My initial table:
species lat lon
sp1 10 10
sp1 10 30
sp1 20 10
sp1 20 20
sp1 20 30
sp2 10 30
sp2 20 30
sp2 30 30
My desired matrix:
lat lon sp1 sp2
10 10 1 0
10 20 0 0
10 30 1 1
20 10 1 0
20 20 1 0
20 30 1 1
30 10 0 0
30 20 0 0
30 30 0 1
--
Christian Hof, PhD student
Center for Macroecology & Evolution
University of Copenhagen
www.macroecology.ku.dk
&
Biodiversity & Global Change Lab
Museo Nacional de Ciencias Naturales, Madrid
www.biochange-lab.eu
mobile ES .. +34 697 508 519
mobile DE .. +49 176 205 189 27
mail .. chof at bio.ku.dk
mail2 .. vogelwart at gmx.de
blog .. www.vogelwart.de
on 07/22/2008 11:24 AM Christian Hof wrote:> Dear all, > > how can I, with R, transform a presence-only table (with the names of > the species (1st column), the lat information of the sites (2nd column) > and the lon information of the sites (3rd column)) into a > presence-absence (0/1) matrix of species occurrences across sites, as > given in the below example? > > Thanks a lot for your help! > Christian > > > > My initial table: > > species lat lon > sp1 10 10 > sp1 10 30 > sp1 20 10 > sp1 20 20 > sp1 20 30 > sp2 10 30 > sp2 20 30 > sp2 30 30 > > > My desired matrix: > > lat lon sp1 sp2 > 10 10 1 0 > 10 20 0 0 > 10 30 1 1 > 20 10 1 0 > 20 20 1 0 > 20 30 1 1 > 30 10 0 0 > 30 20 0 0 > 30 30 0 1One approach would be to use ftable(). Presuming that your source data is in a data frame called 'DF': > ftable(species ~ lat + lon, data = DF) species sp1 sp2 lat lon 10 10 1 0 20 0 0 30 1 1 20 10 1 0 20 1 0 30 1 1 30 10 0 0 20 0 0 30 0 1 See ?ftable and/or ?ftable.formula HTH, Marc Schwartz