r - Resetting TIME column when AMT > 0 -
i have data frame looks this:
id time amt 1 0 50 1 1 0 1 2 0 1 3 0 1 4 0 1 4 50 1 5 0 1 7 0 1 9 0 1 10 0 1 10 50 the time column in above data frame continuous. want add time column resets time 0 when amt>0. so, output data frame should this:
id time amt time2 1 0 50 0 1 1 0 1 1 2 0 2 1 3 0 3 1 4 0 4 1 4 50 0 1 5 0 1 1 7 0 3 1 9 0 5 1 10 0 6 1 10 50 0 this achieved subtracting time "fixed" reference time when amt>0 (for example; reference time second amt>0 4. so, time2 calculated subtracting 5-4=1 ;7-4=3; 9-4=5 etc. how can automatically in r.
a data.table solution :
library(data.table) setdt(dt)[,time2 := time-time[1],cumsum(amt>0)] # id time amt time2 # 1: 1 0 50 0 # 2: 1 1 0 1 # 3: 1 2 0 2 # 4: 1 3 0 3 # 5: 1 4 0 4 # 6: 1 4 50 0 # 7: 1 5 0 1 # 8: 1 7 0 3 # 9: 1 9 0 5 # 10: 1 10 0 6 # 11: 1 10 50 0
Comments
Post a Comment