[R] Finding where a string drops below a certain value
Williams,Caroline
carolinewilliams at ufl.edu
Sat Mar 9 13:53:43 CET 2013
Dear R-helpers,
I am stuck on a problem, and hope someone can help. I am trying to find the time point in a time series where the values drop below a baseline threshold, defined by the mean +/- standard deviation calculated on the last 6 time points of the series. Here is a simplified example:
time <- c(1:12)
x <- c(5.00,4.00,3.00,1.20,1.05,1.20,1.00,-1.00,1.00,-1.00,1.00,-1.00)
min.range <- mean(x[7:12])-sd(x[7:12])
max.range <- mean(x[7:12])+sd(x[7:12])
flag <- ifelse(x[1:6] > max.range | x[1:6] < min.range, 1,0)
I need to pull out two pieces of information:
1) the index for the first time point at which the values return to within one s.d. of the mean of the last 6 values (i.e. the first "0" in the flag list above, returning a time value of 5): this should return the first time point if it is within one s.d. of the mean.
2) the number of time points that occur before values return to that range (i.e. the last "1" before the first "0" in the flagged list, returning a value of 4 in this example): I do not want to count any values that go outside the range after the first value within the range, in this case the final "1" in the flagged list). This should return 0 is the first time point is within one s.d of the mean. The time points will not be spaced in increments of 1 as in this example, so I cannot just subtract one from the value in 1, although subtracting 1 from the index point should work.
I hope this is clear, let me know if I have missed any important information. Thank you for your time, any help much appreciated.
Caroline Williams
__________________________________________________
Caroline Williams, PhD
Postdoctoral Associate, Hahn lab
Department of Entomology and Nematology
University of Florida
Gainesville, FL
Cell: (352) 262-2908 Office: (352) 273-3949
Email: carolinewilliams at ufl.edu Website: plaza.ufl.edu/carolinewilliams
More information about the R-help
mailing list