I have the following data.table:
library (data.table)
dt <- structure(list(variable = c("var1", "var1", 
                            "var2", "var2", "var3", "var3", 
                            "var4", "var4", "var5", "var5"
), src = c("A", "B", 
           "A", "B", 
           "A", "B", 
           "A", "B", 
           "A", "B"
), effect = c(0.00479503189634099, 0.00520945223353099, 0.0414826536175954, 
              0.0534395645078372, 0.00321202935447758, 0.00426201973099257, 
              0.0207942299790097, 0.0268992334286609, 0.304833654398739, 0.291310303107859
)), .Names = c("variable", "src", "effect" ), class = c("data.table", "data.frame"), row.names = c(NA, -10L))
And I want the ranking of the effect by the column src. So for both src's the variable var5 should have rank equal to 1 (for both src's , var5 has the highest effect). So I run 
dt[, rank:=order(effect,  decreasing = T), by=c('src')]
But i get
> dt
    variable src       effect rank
 1:     var1   A 0.0047950319    5
 2:     var1   B 0.0052094522    5
 3:     var2   A 0.0414826536    2
 4:     var2   B 0.0534395645    2
 5:     var3   A 0.0032120294    4
 6:     var3   B 0.0042620197    4
 7:     var4   A 0.0207942300    1
 8:     var4   B 0.0268992334    1
 9:     var5   A 0.3048336544    3
10:     var5   B 0.2913103031    3
Any ideas why is this happening ?
 
     
    