<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Perhaps do:</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">DT[, GRP := .GRP, by=a]</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">And then continue as Chinmay's earlier solution on the column GRP?</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <div id="bloop_sign_1398848494787316992" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">Arun</div></div> <div style="color:black"><br>From: <span style="color:black">Michael Smith</span> <a href="mailto:my.r.help@gmail.com">my.r.help@gmail.com</a><br>Reply: <span style="color:black">Michael Smith</span> <a href="mailto:my.r.help@gmail.com">my.r.help@gmail.com</a><br>Date: <span style="color:black">April 30, 2014 at 11:00:21 AM</span><br>To: <span style="color:black">datatable-help@lists.r-forge.r-project.org</span> <a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a><br>Subject: <span style="color:black"> Re: [datatable-help] Filtering Based on Previous Observation <br></span></div><br> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>... and here's a new challenge. What if `a` is character?
<br>
<br>DT <- data.table(a = as.character(c(1, 2, 2, 3)), b = 8:5)
<br>DT[, L.a := c(NA, head(a, -1))][a != L.a | is.na(L.a)][, L.a := NULL][]
<br>
<br>I still would like to compare equality with the previous
<br>observation/row, and remove it if it's the same. (`diff` doesn't work
<br>with characters.)
<br>
<br>M
<br>
<br>
<br>
<br>On 04/30/2014 04:55 PM, Michael Smith wrote:
<br>> Chinmay,
<br>>  
<br>> Kudos, that's a nice one! It also can be generalized to longer lags.
<br>> Thanks!
<br>>  
<br>> M
<br>>  
<br>> On 04/30/2014 03:59 PM, Chinmay Patil wrote:
<br>>> You can try  
<br>>>
<br>>> DT
<br>>> ##    a b
<br>>> ## 1: 1 8
<br>>> ## 2: 2 7
<br>>> ## 3: 2 6
<br>>> ## 4: 3 5
<br>>>
<br>>> DT[c(T,diff(a)!=0),]
<br>>> ##    a b
<br>>> ## 1: 1 8
<br>>> ## 2: 2 7
<br>>> ## 3: 3 5
<br>>>
<br>>>
<br>>>
<br>>>
<br>>> On Tue, Apr 29, 2014 at 10:04 PM, Michael Smith <my.r.help@gmail.com
<br>>> <mailto:my.r.help@gmail.com>> wrote:
<br>>>
<br>>>     All,
<br>>>
<br>>>     Is there some data.table-idiomatic way to filter based on a previous
<br>>>     observation/row? For example, I want to remove a row if
<br>>>     DT$a[row]==DT$a[row-1].
<br>>>
<br>>>     It could be done by first calculating the lag and then filtering based
<br>>>     on that, but I wonder if there's a more direct way.
<br>>>
<br>>>     The following example works, but my feeling is there should be a more
<br>>>     elegant solution:
<br>>>
<br>>>     ( DT <- data.table(a = c(1, 2, 2, 3), b = 8:5) )
<br>>>     DT[, L.a := c(NA, head(a, -1))][a != L.a | is.na
<br>>>     <http://is.na>(L.a)][, L.a := NULL][]
<br>>>
<br>>>     Thanks,
<br>>>     M
<br>>>     _______________________________________________
<br>>>     datatable-help mailing list
<br>>>     datatable-help@lists.r-forge.r-project.org
<br>>>     <mailto:datatable-help@lists.r-forge.r-project.org>
<br>>>     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
<br>>>
<br>>>
<br>_______________________________________________
<br>datatable-help mailing list
<br>datatable-help@lists.r-forge.r-project.org
<br>https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
<br></div></div></span></blockquote></body></html>