On 2012-06-08 14:33, Steve E. wrote:
Dear R Community - I hope you might be able to provide some guidance
regarding the use of the rle function. I have a set of time-series data
where a measured value is recorded every 30 seconds after the start of an
experiment. Many of the measured values repeat and I am interested only in
the values when there is a change. If I turn the measured values into a
vector, the rle function works perfectly for this but I need also the
corresponding time of the value and I am not sure how to use rle on paired
data. Below is a brief example to help explain the problem. I thank you in
advance for any assistance you might be able to provide. Regards, Steve

Original dataset:

ElpsdTime, DataValue
0, 1
30, 1
60, 1
90, 2
120, 2
150, 3
180, 2
210, 3
240, 3
.
.

Desired dataset:

ElpTime DataValue
0, 1
90, 2
150, 3
180, 2
210, 3
.
.

Let's call your dataframe 'dat'. Here's a pretty brute-force way:

  z <- rle(dat[, 2])
  zV <- z$values
  zL <- z$lengths
  idx <- c(0, head(cumsum(zL), -1)) + 1
  newdat <- data.frame(time = dat[idx, 1], value = zV)
  newdat

Peter Ehlers

______________________________________________
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