2014-03-13 18 views
2

我正在嘗試確定data.table中重複的行。以下是我使用的示例代碼。使用`duplicateated`函數在`data.table`中使用鍵識別重複的行

a<-c(1,2,3,3,5) 
b<-c(6,7,8,9,10) 
require(data.table) 
DT<-data.table(a,b) 
setkey(DT,a) 
DT 
# a b 
# 1: 1 6 
# 2: 2 7 
# 3: 3 8 
# 4: 3 9 
# 5: 5 10 
setkey(DT,a) 
duplicated(DT) 
# [1] FALSE FALSE FALSE TRUE FALSE 

正如你可以看到,我識別行4作爲重複的行,這是不正確的DT [3:4中, 「b」,用= FALSE]是不同的。我是否使用duplicated功能錯誤?

+0

看一看'?duplicated.data .table「。 – Arun

+0

@Arun我檢查了它,但在參數'by'的定義中感到困惑,它指出:「NULL或FALSE值使用所有列,並且類似於data.frame方法。」 –

+0

是的,你對此感到困惑嗎?尤其是當前一行指出「默認爲'key(x)',默認情況下,它只使用* key *列」。 – Arun

回答

4

duplicated.datatableby參數默認爲鍵列

因此,如果您設置此考慮所有列,它將執行如你所願

duplicated(DT, by = names(DT)) 
# [1] FALSE FALSE FALSE FALSE FALSE 
相關問題