-1
我有更大的一組數據,並且需要滿足某些條件的行的行號。行號。打包data.table。列的子集上的data.table「二進制搜索」的行索引
days <- strptime(c("2013-01-01 8:00:00", "2013-02-01 8:00:00"), format="%Y-%m-%d %H:%M:%S")
DateTime <- rep(seq(days[1], days[2], length.out=1e6/5), 5)
Update <- rep(LETTERS[3:1], length.out=1e6)
Group <- rep(c("AAA", "BBB", "CCC"), length.out=1e6)
Weight <- trunc(rnorm(1e6, 110, 3))
Weight2 <- rnorm(1e6, 100, 1.5)
DT <- data.table(DateTime, Update, Group, Weight, Weight2)
setkey(DT, DateTime, Update, Group, Weight, Weight2)
Exp <- DT[1e6/2]
我不能沒有列的DateTime創建另一個data.table作爲一個子集,因爲此列中的關鍵應用。在子集上創建一個新密鑰可能會改變順序,我需要確定原始順序已被保留。
有可能通過使用兩個命令來得到行號我所需要的。
system.time(DT[, which(DT$Update==Exp$Update & DT$Group==Exp$Group & DT$Weight==Exp$Weight & DT$Weight2==Exp$Weight2)])
system.time(which(DT$Update==Exp$Update & DT$Group==Exp$Group & DT$Weight==Exp$Weight & DT$Weight2==Exp$Weight2))
不過,我需要一個更快的方法來做到這一點。
謝謝你的任何建議。
請避免說明包裝的一般性。當他們錯了時,他們會讓你的問題變得更長,並且會特別困惑。讓它簡單,**我有這個,我嘗試過,我得到了這個,但我想得到這個**。 – agstudy
我編輯了我的問題。 [鏈接](http://stackoverflow.com/questions/15597685/subsetting-data-table-by-2nd-column-only-of-a-2-column-key-using-binary-search)確實提供了一個答案到一個不同的,但類似的問題。解決方案是不同的。 – camsique