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 ?