查找所有重复的行,包括“下标较小的元素”

R的duplicated返回一个向量,该向量显示向量或数据框的每个元素是否具有较小下标的元素的副本。 所以,如果一个5行dataframe的第3,4和5行是相同的, duplicated将给我这个向量

 FALSE, FALSE, FALSE, TRUE, TRUE 

但在这种情况下,我真的想得到

 FALSE, FALSE, TRUE, TRUE, TRUE 

也就是说,我想知道一行是否被一个较大的下标行重复。

duplicated有一个fromLast参数。 ?duplicated的“示例”部分向您展示了如何使用它。 只需调用两次duplicated ,一次使用fromLast=FALSE ,一次使用fromLast=TRUE ,并将其中任一个为TRUE的行。


一些晚了编辑:你没有提供一个可重复的例子,所以这里有一个由@jbaums友好的插图

 vec <- c("a", "b", "c","c","c") vec[duplicated(vec) | duplicated(vec, fromLast=TRUE)] ## [1] "c" "c" "c" 

您需要组装duplicated值的集合,应用unique值,然后使用%in%进行testing。 像往常一样,一个样本问题将使这个过程活跃起来。

 > vec <- c("a", "b", "c","c","c") > vec[ duplicated(vec)] [1] "c" "c" > unique(vec[ duplicated(vec)]) [1] "c" > vec %in% unique(vec[ duplicated(vec)]) [1] FALSE FALSE TRUE TRUE TRUE 

我有同样的问题 ,如果我没有错,这也是一个答案。

 vec[col %in% vec[duplicated(vec$col),]$col] 

不知道哪一个更快,但是我目前使用的数据集还不够大,无法进行产生显着时间差的testing。