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/
I don't know if I understand what you want. What are the periods? I suspect this is a time series. What have you tried that didn't work? kind regards, Stephen On 01/15/2013 10:16 AM, Benjamin Gillespie wrote:> 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.-- Stephen Sefick ************************************************** Auburn University Biological Sciences 331 Funchess Hall Auburn, Alabama 36849 ************************************************** sas0025 at auburn.edu http://www.auburn.edu/~sas0025 ************************************************** Let's not spend our time and resources thinking about things that are so little or so large that all they really do for us is puff us up and make us feel like gods. We are mammals, and have not exhausted the annoying little problems of being mammals. -K. Mullis "A big computer, a complex algorithm and a long time does not equal science." -Robert Gentleman
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.
Hi Ben I'm not sure whether I understood correctly, but is it something like this?> sum(ifelse(b==2,1,0))[1] 4> sum(ifelse(b==3,1,0))[1] 4> sum(ifelse(b>=2,1,0))[1] 13> sum(ifelse(b>2,1,0))[1] 9 Etc... Jos? Jos? Iparraguirre Chief Economist Age UK -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Benjamin Gillespie Sent: 15 January 2013 16:16 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. Wrap Up and Run 10k is back! Also, new for 2013 ? 2km intergenerational walks at selected venues. So recruit a buddy, dust off the trainers and beat the winter blues by signing up now: http://www.ageuk.org.uk/10k Milton Keynes | Oxford | Sheffield | Crystal Palace | Exeter | Harewood House, Leeds | Tatton Park, Cheshire | Southampton | Coventry Age UK Improving later life http://www.ageuk.org.uk ------------------------------- Age UK is a registered charity and company limited by guarantee, (registered charity number 1128267, registered company number 6825798). Registered office: Tavis House, 1-6 Tavistock Square, London WC1H 9NA. For the purposes of promoting Age UK Insurance, Age UK is an Appointed Representative of Age UK Enterprises Limited, Age UK is an Introducer Appointed Representative of JLT Benefit Solutions Limited and Simplyhealth Access for the purposes of introducing potential annuity and health cash plans customers respectively. Age UK Enterprises Limited, JLT Benefit Solutions Limited and Simplyhealth Access are all authorised and regulated by the Financial Services Authority. ------------------------------ This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you receive a message in error, please advise the sender and delete immediately. Except where this email is sent in the usual course of our business, any opinions expressed in this email are those of the author and do not necessarily reflect the opinions of Age UK or its subsidiaries and associated companies. Age UK monitors all e-mail transmissions passing through its network and may block or modify mails which are deemed to be unsuitable. Age Concern England (charity number 261794) and Help the Aged (charity number 272786) and their trading and other associated companies merged on 1st April 2009. Together they have formed the Age UK Group, dedicated to improving the lives of people in later life. The three national Age Concerns in Scotland, Northern Ireland and Wales have also merged with Help the Aged in these nations to form three registered charities: Age Scotland, Age NI, Age Cymru.
Maybe rle can help a little here rle(b>1) Run Length Encoding lengths: int [1:5] 3 5 5 8 3 values : logi [1:5] FALSE TRUE FALSE TRUE FALSE r<-rle(b>1) r$lengths[r$values] [1] 5 8 # started for the maximum but need to go home now, sorry. Will continue tomorrow if noone else finishes it. groups <- rep(1:length(r$lengths),r$lengths) On 15.01.2013, at 17:16, Benjamin Gillespie wrote:> 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.
On Jan 15, 2013, at 8:16 AM, Benjamin Gillespie wrote:> 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.Look at: rle(b>1) ?rle Should get you started. -- David David Winsemius, MD Alameda, CA, USA