Dear List, I am trying to find each time a value changes in a dataset. The numbers are variables for day vs. night values, so what I am really getting is the daily sunrise and sunset. A simplified example is the following: x<-seq(1:100) y1<-rep(1,10) y2<-rep(2,10) y<-c(y1,y2,y1,y1,y1,y2,y1,y2,y1,y2) xy<-cbind(x,y) I would like to know each time the numbers change. Correct answer should be: x=1,11,21,51,61,71,81,91 I would appreciate any help or suggestions. It seems like it should be simple but I?m stuck! Thanks, Tim Tim Clark Department of Zoology University of Hawaii
something like this?> c(1, which(c(0, diff(y)) != 0))[1] 1 11 21 51 61 71 81 91 Bill Venables CSIRO/CMIS Cleveland Laboratories -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Tim Clark Sent: Thursday, 11 February 2010 11:59 AM To: r-help at r-project.org Subject: [R] Find each time a value changes Dear List, I am trying to find each time a value changes in a dataset. The numbers are variables for day vs. night values, so what I am really getting is the daily sunrise and sunset. A simplified example is the following: x<-seq(1:100) y1<-rep(1,10) y2<-rep(2,10) y<-c(y1,y2,y1,y1,y1,y2,y1,y2,y1,y2) xy<-cbind(x,y) I would like to know each time the numbers change. Correct answer should be: x=1,11,21,51,61,71,81,91 I would appreciate any help or suggestions. It seems like it should be simple but I'm stuck! Thanks, Tim Tim Clark Department of Zoology University of Hawaii ______________________________________________ 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.
Hi, On Feb 10, 2010, at 8:58 PM, Tim Clark wrote:> Dear List, > > I am trying to find each time a value changes in a dataset. The > numbers are variables for day vs. night values, so what I am really > getting is the daily sunrise and sunset. > > A simplified example is the following: > > x<-seq(1:100) > y1<-rep(1,10) > y2<-rep(2,10) > y<-c(y1,y2,y1,y1,y1,y2,y1,y2,y1,y2) > xy<-cbind(x,y) > > > I would like to know each time the numbers change. > Correct answer should be: > x=1,11,21,51,61,71,81,91 >I think this gets close... which(diff(y) != 0) [1] 10 20 50 60 70 80 90 You'll need to fiddle to get exactly what you want. Cheers, Ben> I would appreciate any help or suggestions. It seems like it should > be simple but I?m stuck! > > Thanks, > > Tim > > > Tim Clark > Department of Zoology > University of Hawaii > > > > > ______________________________________________ > 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.