[R] data transformation

Marc Schwartz marc_schwartz at comcast.net
Tue Jul 22 19:45:53 CEST 2008


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    1


One 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



More information about the R-help mailing list