Add a new column, based on data in between zeroes

后端 未结 3 1234
心在旅途
心在旅途 2020-12-21 10:57

I have power data (Power) collected every second (Sample). My data.frame is therefore structured as follows:

Test <- data.frame(Sample = c(1:20), 
                


        
3条回答
  •  粉色の甜心
    2020-12-21 11:31

    An alternative base R version using cumsum:

    mrk <- Test$Power==0
    Test$New[!mrk] <- paste("effort", as.numeric(factor(cumsum(mrk)[!mrk])))
    Test$New[mrk] <- "rest"
    
    #   Sample Power   Marker      New
    #1       1     0     Rest     rest
    #2       2     0     Rest     rest
    #3       3     0     Rest     rest
    #4       4     0     Rest     rest
    #5       5     0     Rest     rest
    #6       6    50 Effort 1 effort 1
    #7       7    67 Effort 1 effort 1
    #8       8   100 Effort 1 effort 1
    #9       9    92 Effort 1 effort 1
    #10     10     0     Rest     rest
    #11     11     0     Rest     rest
    #12     12     0     Rest     rest
    #13     13    36 Effort 2 effort 2
    #14     14    89 Effort 2 effort 2
    #15     15    36 Effort 2 effort 2
    #16     16     0     Rest     rest
    #17     17     0     Rest     rest
    #18     18     0     Rest     rest
    #19     19    89 Effort 3 effort 3
    #20     20    90 Effort 3 effort 3
    

提交回复
热议问题