我發現在data.table()裏面,order函數按組枚舉行,而最初的想法是查看指定組內每個觀察值的等級。data.table函數內部錯誤的結果
這裏是一個可再現的例子:
require(data.table)
N <- 10
set.seed(1)
test <- data.table(
a = round(rnorm(N,mean=0, sd = 30),0),
b = c(rep('group_1', N/2),rep('group_2', N/2))
)
test <- test[, item_position := order(a, decreasing = T), by=list(b)]
setkey(test, b, item_position)
View(test)
結果(因爲我得到它):
test
a b item_position
1: 48 group_1 1
2: -25 group_1 2
3: 10 group_1 3
4: -19 group_1 4
5: 6 group_1 5
6: -9 group_2 1
7: 22 group_2 2
8: -25 group_2 3
9: 15 group_2 4
10: 17 group_2 5
這顯然是錯誤的。 我做錯了什麼,以及如何在data.table中使用order()?
謝謝!
我想你實際上是在尋找'rank'不'order'。也許是這樣的:'test [,item_position:= rank(a,ties.method =「first」),by = b] []'? – A5C1D2H2I1M1N2O1R2T1
@eddi,有趣的是,他們確實使用'set.seed',但我得到完全不同的結果:-) – A5C1D2H2I1M1N2O1R2T1
@eddie對不起,我的壞,修復了結果。它仍然不是我所期待的,但我希望這次它匹配:) – Loiisso