[datatable-help] Filtering Based on Previous Observation

Michael Smith my.r.help at gmail.com
Wed Apr 30 10:55:18 CEST 2014


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 <my.r.help at gmail.com
> <mailto: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
>     <http://is.na>(L.a)][, L.a := NULL][]
> 
>     Thanks,
>     M
>     _______________________________________________
>     datatable-help mailing list
>     datatable-help at lists.r-forge.r-project.org
>     <mailto:datatable-help at lists.r-forge.r-project.org>
>     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
> 
> 


More information about the datatable-help mailing list