You can try DT ## a b ## 1: 1 8 ## 2: 2 7 ## 3: 2 6 ## 4: 3 5
DT[c(T,diff(a)!=0),] ## a b ## 1: 1 8 ## 2: 2 7 ## 3: 3 5 On Tue, Apr 29, 2014 at 10:04 PM, Michael Smith <[email protected]> wrote: > All, > > Is there some data.table-idiomatic way to filter based on a previous > observation/row? For example, I want to remove a row if > DT$a[row]==DT$a[row-1]. > > It could be done by first calculating the lag and then filtering based > on that, but I wonder if there's a more direct way. > > The following example works, but my feeling is there should be a more > elegant solution: > > ( DT <- data.table(a = c(1, 2, 2, 3), b = 8:5) ) > DT[, L.a := c(NA, head(a, -1))][a != L.a | is.na(L.a)][, L.a := NULL][] > > Thanks, > M > _______________________________________________ > datatable-help mailing list > [email protected] > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help >
_______________________________________________ datatable-help mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
