[R] Presence/ absence data from matrix to single column
arun
smartpink111 at yahoo.com
Mon Oct 8 02:28:42 CEST 2012
HI,
Sorry, I complicated a code where it was not required at all.
Just using colnames(dat1)[4:6] or names(dat1)[4:6] should work if the species columns are adjacent to each other.
reshape(dat1,varying=4:6,v.name="Sp-value",times=colnames(dat1)[4:6],timevar="Sp-name",idvar=c("Year","Route","Point"),direction="long")
#or
reshape(dat1,varying=4:6,v.name="Sp-value",times=names(dat1)[4:6],timevar="Sp-name",idvar=c("Year","Route","Point"),direction="long")
A.K.
________________________________
From: Andrea Goijman <agoijman at cnia.inta.gov.ar>
To: arun <smartpink111 at yahoo.com>
Cc: Rui Barradas <ruipbarradas at sapo.pt>; R help <r-help at r-project.org>
Sent: Sunday, October 7, 2012 7:16 PM
Subject: Re: [R] Presence/ absence data from matrix to single column
Ill try this one as well.
And I guess the one below is not going to work, because all my species have different names.
Thanks!
#nms <- names(adat)
nms <- c("Year", "Route", "Point", paste0("Sp", 1:250))
pattern <- "^Sp[[:digit:]]+$"
whichCols <- grep(pattern, nms)
whichNames <- nms[whichCols]
reshape(..., varying = whichCols, times = whichNames, ...)
On Sun, Oct 7, 2012 at 3:02 PM, arun <smartpink111 at yahoo.com> wrote:
Hi,
>I guess you are not talking about the melt() method.
>dat1<-read.table(text="
>
>Year Route Point Sp1 Sp2 Sp3
>2004 123 123-1 0 1 0
>2004 123 123-2 0 1 1
>2004 123 123-10 1 1 0
>",header=TRUE,sep="",stringsAsFactors=FALSE)
>
>
>#If all the Sp columns are located next to another as shown in your example dataset, then you can also try this:
>name1<-unlist(strsplit(paste(colnames(dat1)[4:6],collapse=" ")," "))
>reshape(dat1,varying=4:6,v.name="Sp-value",times=name1,timevar="Sp-name",idvar=c("Year","Route","Point"),direction="long")
>
>
>A.K.
>
>
>
>
>
>
>----- Original Message -----
>
>From: Rui Barradas <ruipbarradas at sapo.pt>
>To: agoijman <agoijman at cnia.inta.gov.ar>
>Cc: r-help at r-project.org
>Sent: Sunday, October 7, 2012 2:32 PM
>Subject: Re: [R] Presence/ absence data from matrix to single column
>
>Hello,
>
>I haven't been following this thread but apparently the answer to your
>worries is no.
>You can use a combination of names() and grep() to sort it out.
>something like
>
>#nms <- names(adat)
>nms <- c("Year", "Route", "Point", paste0("Sp", 1:250))
>
>pattern <- "^Sp[[:digit:]]+$"
>whichCols <- grep(pattern, nms)
>whichNames <- nms[whichCols]
>
>reshape(..., varying = whichCols, times = whichNames, ...)
>
>
>Hope this helps,
>
>Rui Barradas
>Em 07-10-2012 15:35, agoijman escreveu:
>> The problem with that, is that I just wrote an example of my database, but I
>> have around 250 species and more than 500 sites. In the approach you show
>> me, it looks like I have to enter every species name and sites individually,
>> right?
>>
>>
>>
>> --
>> View this message in context: http://r.789695.n4.nabble.com/Presence-absence-data-from-matrix-to-single-column-tp4645271p4645331.html
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> R-help at 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 at 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.
>
>
--
---Lic. Andrea Paula Goijman
Grupo Ecología y Gestión Ambiental de la Biodiversidad
IRB - INTA Castelar, Argentina
agoijman at cnia.inta.gov.arhttp://inta.gob.ar/personas/goijman.andrea/
PhD Candidate
Georgia Cooperative Fish and Wildlife Research Unit
D.B. Warnell School of Forestry and Natural Resources
University of Georgia
Athens, GA 30602 USA
Tel. +706.206.4805
andreapg at uga.edu
More information about the R-help
mailing list