R:删除行和列中的重复值

时间:2015-07-07 18:25:19

标签: r duplicates

我找到很多关于在列表中查找重复元素或在数据框中查找重复行的页面。但是,我想在整个数据框中搜索重复的元素。以此为例:

df
     coupon1    coupon2    coupon3
1         10         11         12
2         13         16         15
3         16         17         18
4         19         20         21
5         22         23         24
6         25         26         27

您会注意到df [2,2]和df [3,1]具有相同的元素(16)。我跑的时候

duplicated(df)

它返回6个“FALSE”,因为整行不重复,只有一个元素。如何在整个数据框中检查任何重复值?我想知道重复存在并且也知道它的值(如果有多个重复,则相同)。

2 个答案:

答案 0 :(得分:2)

这将找到全局欺骗,但它会按列搜索。所以(3,1)仍然是FALSE,因为它是数据框中的第一个值16

m <- matrix(duplicated(unlist(df)), ncol=ncol(df))
#      [,1]  [,2]  [,3]
#[1,] FALSE FALSE FALSE
#[2,] FALSE  TRUE FALSE
#[3,] FALSE FALSE FALSE
#[4,] FALSE FALSE FALSE
#[5,] FALSE FALSE FALSE
#[6,] FALSE FALSE FALSE

然后您可以使用它,例如:

df[m]
#[1] 16

答案 1 :(得分:1)

which(duplicated(stack(yourdf)[,1]))
[1] 8
stack(yourdf)[,1][which(duplicated(stack(yourdf)[,1]))]
[1] 16