[R] Code to fetch summary info from vector
William Dunlap
wdunlap at tibco.com
Tue Jan 15 17:51:48 CET 2013
I don't completely understand the question, but if you are looking
for the lengths of the runs of values greater than 1 then rle() would
help:
> b <- c(1,1,1,2,3,4,3,2,1,1,1,1,1,2,3,4,5,4,3.5,3,2,1,1,1)
> r <- rle(b>1)
> r
Run Length Encoding
lengths: int [1:5] 3 5 5 8 3
values : logi [1:5] FALSE TRUE FALSE TRUE FALSE
> r$lengths[r$values]
[1] 5 8
To get the maximum of each run of values greater than one, something
like the following may do (there are more elegant ways, but I don't want
to spend the time on it until I know what the question is):
> runNumber <- cumsum( c(b[1]>1, (b[-1]>1) & (b[-length(b)]<=1)) )
> runNumber[b<=1] <- NA
> tapply(b, runNumber, max)
1 2
4 5
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
> Of Benjamin Gillespie
> Sent: Tuesday, January 15, 2013 8:16 AM
> To: r-help at r-project.org
> Subject: [R] Code to fetch summary info from vector
>
> Hi all,
>
> Thanks in advance for any help.
>
> I have a vector "b":
>
> b=c(1,1,1,2,3,4,3,2,1,1,1,1,1,2,3,4,5,4,3.5,3,2,1,1,1)
>
> Imagine b is river flow throughout time.
>
> I would like some code that will generate the following information:
>
> number of individual 'periods' where b>1 (= 2 in this case)
> period 1 length = 5, max = 4
> period 2 length = 8, max = 5
>
> I can't figure anything useful out.
>
> Thanks,
>
> Ben Gillespie
> Research Postgraduate
>
> School of Geography
> University of Leeds
> Leeds
> LS2 9JT
>
> http://www.geog.leeds.ac.uk/
> ______________________________________________
> 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.
More information about the R-help
mailing list