Perhaps do: DT[, GRP := .GRP, by=a]
And then continue as Chinmay's earlier solution on the column GRP? Arun From: Michael Smith [email protected] Reply: Michael Smith [email protected] Date: April 30, 2014 at 11:00:21 AM To: [email protected] [email protected] Subject: Re: [datatable-help] Filtering Based on Previous Observation ... and here's a new challenge. What if `a` is character? DT <- data.table(a = as.character(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][] I still would like to compare equality with the previous observation/row, and remove it if it's the same. (`diff` doesn't work with characters.) M On 04/30/2014 04:55 PM, Michael Smith wrote: > Chinmay, > > Kudos, that's a nice one! It also can be generalized to longer lags. > Thanks! > > M > > On 04/30/2014 03:59 PM, Chinmay Patil wrote: >> 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] >> <mailto:[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 >> <http://is.na>(L.a)][, L.a := NULL][] >> >> Thanks, >> M >> _______________________________________________ >> datatable-help mailing list >> [email protected] >> <mailto:[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
_______________________________________________ datatable-help mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
