[datatable-help] Order of DT after non-keyed by
    Joseph Voelkel 
    jgvcqa at rit.edu
       
    Wed Apr 11 03:39:20 CEST 2012
    
    
  
Thanks, Matthew, for not only the answer but also the historical context and keyby.
Joe
-----Original Message-----
From: Matthew Dowle [mailto:mdowlenoreply at virginmedia.com] On Behalf Of Matthew Dowle
Sent: Tuesday, April 10, 2012 8:22 PM
To: Joseph Voelkel
Cc: datatable-help at r-forge.wu-wien.ac.at
Subject: Re: [datatable-help] Order of DT after non-keyed by
Yes, correct behaviour. That's an ad hoc by which preserves the group order (the order of first appearance of each group). From ?data.table, the second part of this sentence :
"The order of the rows within each group is preserved, as is the order of the groups."
That was new in 1.6.3 :
o   Ad hoc grouping now returns results in the same order each 
    group first appears in the table, rather than sorting the
    groups. Thanks to Steve Lianoglou for highlighting. The order
    of the rows within each group always has and always will be 
    preserved. For larger datasets a 'keyed by' is still faster;
    e.g., by=key(DT).
To reorder the ad hoc by result, change 'by=' to 'keyby=' (in v1.8.0).
Not be confused with keyed by!
Matthew
On Tue, 2012-04-10 at 19:51 -0400, Joseph Voelkel wrote:
> Here is a simple example of a simple question:
> 
>  
> 
> dt<-data.table(a=rep(1:5,1:5),b=1,c=rep(1:3,5))
> 
> dt
> 
> dt[,seq_along(b),by=a] # expected behavior (note: dt is already in 
> order of a)
> 
> setkey(dt,c) # to sort by c
> 
> dt
> 
> dt[,seq_along(b),by=a] # expected behavior? Appears to be in order of
> unique(dt$a)
> 
>  
> 
> Thanks,
> 
>  
> 
> Joe Voelkel
> 
> 
> _______________________________________________
> 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
    
    
More information about the datatable-help
mailing list