2016-06-13 59 views
2

我在data.table對象上使用duplicated函數。它返回FALSE兩個似乎相同的值。複製一個微小的差異

更深入地看,它們看起來有微小的差別(-1.867777e-14,但它可以是任何其他接近零的值)。

我的需要,這是一個錯誤。你如何解決它,而不改變表中的值?

+2

你可以把你的價值四捨五入。 – mtoto

+0

是的,這就是我在想什麼,只是想知道如何(不是所有的列都是數字,我不知道我想要如何精確)。但它應該解決。 –

+0

你的意思是有些列是字符?也許你想基於字符串的模糊匹配進行重複,請參閱:http://stackoverflow.com/questions/11535625 – zx8754

回答

4

您可以嘗試round,同時使用duplicated;

> x<-c(10.258963,10.258962) 
> duplicated(x) 
[1] FALSE FALSE 
> duplicated(round(x,5)) 
[1] FALSE TRUE 
+0

謝謝。如果我需要檢查某些非數字值(因此不能捨入)以及數值的重複值,我該怎麼辦? –

+0

查看此問題的示例:http://stackoverflow.com/questions/13742446/duplicates-in-multiple-columns –

+1

因此,根據示例,如果我有'numeric_cols'和'non_numeric_cols'列名,我會使用一些像'duplicateated(dt [,non_numeric_cols,with = FALSE],by = NULL)&duplicate(round(dt [,numeric_cols,with = FALSE],by = NULL),5)'? –