Skip to content
Prev 307240 / 398503 Next

Presence/ absence data from matrix to single column

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:
______________________________________________
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.