Here is one way to use rle() to solve the problem:

  shortRunsOfOnesToNAs <- function(x, n) {
      r <- rle(x)
      r$values[r$values==1 & r$lengths < n] <- NA
      rep(r$values, r$lengths)
  }
E.g.,
  input <- c(0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1)
  result <- shortRunsOfOnesToNAs(input, 5)
  desiredResult <- c(0,0,NA,NA,NA,0,0,0,0,1,1,1,1,1,1,1,1)
  all.equal(desiredResult, result) # TRUE

Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Thu, Jul 10, 2014 at 5:34 AM, jeff6868 <geoffrey_kl...@etu.u-bourgogne.fr
> wrote:

> Hi everybody,
>
> I have a small problem in a function, about removing short sequences of
> identical numeric values.
>
> For the example, we can consider this data, containing only some "0" and
> "1":
>
> test <- data.frame(x=c(0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1))
>
> The aim of my purpose here is simply to remove each sequence of "1" with a
> length shorter than 5, and to keep sequences of "1" which are bigger than
> 5.
> So my final data should look like this:
>
> final <- data.frame(x=c(0,0,NA,NA,NA,0,0,0,0,1,1,1,1,1,1,1,1))
>
> For the moment, I have this function:
>
>     foo <- function(X,N){
>       tab <- table(X[X==1])
>       under.n <- as.numeric(names(tab)[tab<N])
>       ind <- X %in% under.n
>       Ind.sup <- which(ind)
>       X <- ifelse(ind,NA,X)
>     }
>
> test$x <- apply(as.data.frame(test$x),2,function(x) foo(x,5))
>
> The problem is that the function doesn't consider each sequence separately,
> but only one sequence. I think that adding rle() instead of table() in my
> function should to the trick, but it doesn't work yet.
> Does someone have an idea about fixing this problem?
>
>
>
>
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/find-remove-sequences-of-at-least-N-values-for-a-specific-value-tp4693810.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
>

        [[alternative HTML version deleted]]

______________________________________________
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