簡體   English   中英

R:刪除行和列中的重復值

[英]R: remove duplicated values in across rows and columns

我發現了許多關於在列表中查找重復元素或在數據框中查找重復行的頁面。 但是,我想在整個數據框中搜索重復的元素。 以此為例:

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)

它返回六個“FALSE”,因為整行不重復,只有一個元素。 如何檢查整個數據框中的任何重復值? 我想知道重復存在並且也知道它的值(如果有多個重復,則相同)。

這將找到全局欺騙,但它會按列搜索。 所以(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
which(duplicated(stack(yourdf)[,1]))
[1] 8
stack(yourdf)[,1][which(duplicated(stack(yourdf)[,1]))]
[1] 16

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM