Christian,

You need to use reshape to convert to the 'long' format.
Check the help page ?reshape for details.

>dat <- read.table('clipboard', header=TRUE)
>dat
   site lat lon spec1 spec2 spec3 spec4
1 site1  10  11     1     0     1     0
2 site2  20  21     1     1     1     0
3 site3  30  31     0     1     1     1
> dat.long <- reshape(dat, varying = list(names(dat)[4:7]),
timevar="species", 
        times=names(dat)[4:7], direction="long")
> dat.long
         site lat lon species spec1 id
1.spec1 site1  10  11   spec1     1  1
2.spec1 site2  20  21   spec1     1  2
3.spec1 site3  30  31   spec1     0  3
1.spec2 site1  10  11   spec2     0  1
2.spec2 site2  20  21   spec2     1  2
3.spec2 site3  30  31   spec2     1  3
1.spec3 site1  10  11   spec3     1  1
2.spec3 site2  20  21   spec3     1  2
3.spec3 site3  30  31   spec3     1  3
1.spec4 site1  10  11   spec4     0  1
2.spec4 site2  20  21   spec4     0  2
3.spec4 site3  30  31   spec4     1  3
> dat.long[dat.long$spec1 == 1, ]
         site lat lon species spec1 id
1.spec1 site1  10  11   spec1     1  1
2.spec1 site2  20  21   spec1     1  2
2.spec2 site2  20  21   spec2     1  2
3.spec2 site3  30  31   spec2     1  3
1.spec3 site1  10  11   spec3     1  1
2.spec3 site2  20  21   spec3     1  2
3.spec3 site3  30  31   spec3     1  3
3.spec4 site3  30  31   spec4     1  3 

-Christos

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Christian Hof
> Sent: Friday, May 02, 2008 5:28 PM
> To: r-help@r-project.org
> Subject: [R] data transformation
> 
> Dear all,
> how can I, with R, transform a presence-absence (0/1) matrix 
> of species occurrences into a presence-only table (3 columns) 
> 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), as given in the below example?
> Thanks a lot for your help!
> Christian
> 
> 
> my dataframe:
> 
> site  lat     lon     spec1   spec2   spec3   spec4
> site1 10      11      1       0       1       0
> site2 20      21      1       1       1       0
> site3 30      31      0       1       1       1
> 
> 
> my desired new dataframe:
> 
> species       lat     lon
> spec1 10      11
> spec1 20      21
> spec2 20      21
> spec2 30      31
> spec3 10      11
> spec3 20      21
> spec3 30      31
> spec4 30      31
> 
> 
> 
> --
> 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 .. [EMAIL PROTECTED]
>      mail2 .. [EMAIL PROTECTED]
>       blog .. www.vogelwart.de
> 
> ______________________________________________
> 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.
> 
>

______________________________________________
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