Generating the Continuous Sequence of Number for Consecutive Positive Number in R -


this data

diff= c(0.0,1.7,3.2,-0.7,-1.0,2.2,-2,-0.9)  s<- data.frame(diff) 

here can see have 2 columns diff & expected_seq. data sequence given diff column expected sequence should generated

    > s   diff expected_seq 1  0.0            0 2  1.7            1 3  3.2            2 4 -0.7            0 5 -1.0            0 6  2.2            1 7 -2.0            0 8 -0.9            0 

basically value greater 0 should generate sequence of incremented value (1,2,3,4,5....) till next negative ...and on

here's possible solution :

diff= c(0.0,1.7,3.2,-0.7,-1.0,2.2,-2,-0.9) s <- data.frame(diff)  # define indexes of subgroups of consecutive positive or negative numbers rle <- rle(diff>=0) rle$values <- 1:length(rle$values) subgrps <- inverse.rle(rle)  # aggregate subgroups, create indexes or 0 each subgroup , add data.frame s$expected_seq <- unlist(tapply(diff,index=subgrps,function(x) ifelse(x < 0,0,1:length(x))))  > s   diff expected_seq 1  0.0            1 2  1.7            2 3  3.2            3 4 -0.7            0 5 -1.0            0 6  2.2            1 7 -2.0            0 8 -0.9            0 

Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

Why does math.random(999999999999) returns 1 in Lua? -