Hi Jennifer, A very pedestrian method, but I think it does what you want. remove_rows_after_1<-function(x) { nrows<-dim(x)[1] rtr<-NA rtrcount<-1 got1<-FALSE thisID<-x$ID[1] for(i in 1:nrows) { if(x$ID[i] == thisID && got1) { rtr[rtrcount]<-i rtrcount<-rtrcount+1 } if(x$ID[i] != thisID) { thisID<-x$ID[i] got1<-FALSE } if(x$ID[i] == thisID && x$LABEL[i]) got1<-TRUE } return(rtr) }
The function returns the indices of rows to be removed. Jim On Mon, Aug 8, 2016 at 8:21 AM, Jennifer Sheng <jennifer.sheng2...@gmail.com> wrote: > Dear all, > > I need to remove any rows AFTER the label becomes 1. For example, for ID > 1, the two rows with TIME of 15 & 18 should be removed; for ID 2, any rows > after time 6, i.e., rows of time 9-18, should be removed. Any > suggestions? Thank you very much! > > The current dataset looks like the following: > ID TIME LABEL > 1 0 0 > 1 3 0 > 1 6 0 > 1 9 0 > 1 12 1 > 1 15 0 > 1 18 0 > 2 0 0 > 2 3 0 > 2 6 1 > 2 9 0 > 2 12 0 > 2 15 0 > 2 18 0 > > Thanks a lot! > Jennifer > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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 -- To UNSUBSCRIBE and more, see 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.