Thanks to all of you. All solutions work fine. I'm running S Ellisons
version with Williams comment. Perfect for what I'm doing.

And sorry for using a name same as a base R function (twice) ;-)

Cheers,
Carlos


2013/11/1 PIKAL Petr <petr.pikal@precheza.cz>

> Hi
>
> Yes you are right. This gives number of zeroes not max number of
> consecutive zeroes.
>
> Regards
> Petr
>
>
> > -----Original Message-----
> > From: arun [mailto:smartpink111@yahoo.com]
> > Sent: Friday, November 01, 2013 2:17 PM
> > To: R help
> > Cc: PIKAL Petr; Carlos Nasher
> > Subject: Re: [R] Count number of consecutive zeros by group
> >
> > I think this gives a different result than the one OP asked for:
> >
> > df1 <- structure(list(ID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
> > 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), x = c(1, 0, 0, 1, 0,
> > 0, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0)), .Names = c("ID",
> > "x"), row.names = c(NA, -22L), class = "data.frame")
> >
> > with(df1, sapply(split(x, ID), function(x) sum(x==0)))
> >
> > with(df1,tapply(x,list(ID),function(y) {rl <- rle(!y);
> > max(c(0,rl$lengths[rl$values]))}))
> >
> >
> > A.K.
> >
> >
> > On Friday, November 1, 2013 6:01 AM, PIKAL Petr
> > <petr.pikal@precheza.cz> wrote:
> > Hi
> >
> > Another option is sapply/split/sum construction
> >
> > with(data, sapply(split(x, ID), function(x) sum(x==0)))
> >
> > Regards
> > Petr
> >
> >
> > > -----Original Message-----
> > > From: r-help-bounces@r-project.org [mailto:r-help-bounces@r-
> > > project.org] On Behalf Of Carlos Nasher
> > > Sent: Thursday, October 31, 2013 6:46 PM
> > > To: S Ellison
> > > Cc: r-help@r-project.org
> > > Subject: Re: [R] Count number of consecutive zeros by group
> > >
> > > If I apply your function to my test data:
> > >
> > > ID <- c(1,1,1,2,2,3,3,3,3)
> > > x <- c(1,0,0,0,0,1,1,0,1)
> > > data <- data.frame(ID=ID,x=x)
> > > rm(ID,x)
> > >
> > > f2 <-   function(x) {
> > >   max( rle(x == 0)$lengths )
> > > }
> > > with(data, tapply(x, ID, f2))
> > >
> > > the result is
> > > 1 2 3
> > > 2 2 2
> > >
> > > which is not what I'm aiming for. It should be
> > > 1 2 3
> > > 2 2 1
> > >
> > > I think f2 does not return the max of consecutive zeros, but the max
> > > of any consecutve number... Any idea how to fix this?
> > >
> > >
> > > 2013/10/31 S Ellison <S.Ellison@lgcgroup.com>
> > >
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > So I want to get the max number of consecutive zeros of variable
> > x
> > > > > for
> > > > each
> > > > > ID. I found rle() to be helpful for this task; so I did:
> > > > >
> > > > > FUN <- function(x) {
> > > > >   rles <- rle(x == 0)
> > > > > }
> > > > > consec <- lapply(split(df[,2],df[,1]), FUN)
> > > >
> > > > You're probably better off with tapply and a function that returns
> > > > what you want. You're probably also better off with a data frame
> > > > name that isn't a function name, so I'll use dfr instead of df...
> > > >
> > > > dfr<- data.frame(x=rpois(500, 1.5), ID=gl(5,100)) #5 ID groups
> > > > numbered 1-5, equal size but that doesn't matter for tapply
> > > >
> > > > f2 <-   function(x) {
> > > >         max( rle(x == 0)$lengths )
> > > > }
> > > > with(dfr, tapply(x, ID, f2))
> > > >
> > > >
> > > > S Ellison
> > > >
> > > >
> > > > *******************************************************************
> > > > This email and any attachments are confidential. Any
> > > > u...{{dropped:24}}
> > >
> > > ______________________________________________
> > > 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.
> >
> >
> > ______________________________________________
> > 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.
>
>


-- 
-----------------------------------------------------------------
Carlos Nasher
Buchenstr. 12
22299 Hamburg

tel:            +49 (0)40 67952962
mobil:        +49 (0)175 9386725
mail:          carlos.nasher@gmail.com

	[[alternative HTML version deleted]]

