[datatable-help] Filtering Based on Previous Observation

Chinmay Patil chinmay.patil at gmail.com
Wed Apr 30 09:59:52 CEST 2014


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 <my.r.help at gmail.com> 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
> datatable-help at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/datatable-help/attachments/20140430/531e2e4c/attachment.html>


More information about the datatable-help mailing list