在 R 数据框中,识别/删除具有至少两个重复值的行

How*_*rdA 0 r rows duplicates dataframe

假设我们有一个 R 数据框。我们如何识别(并删除)某个值至少出现两次的任何行?经过一番搜索,我仍然无法在网上找到解决方案。一个小代码示例说明了我所追求的:

> df <- data.frame(x = c(10, 20, 30, 50), y = c(30, 40, 40, 50), 
                   z = c(40, 50, 10, 50), w = c(50, 40, 50, 50))
Run Code Online (Sandbox Code Playgroud)

这给出了数据框

>df
   x  y  z  w
1 10 30 40 50
2 20 40 50 40
3 30 40 10 50
4 50 50 50 50
Run Code Online (Sandbox Code Playgroud)

因此,df 在第 2 行和第 4 行中有重复的值,我想删除这些行,以获得result

> result
   x  y  z  w
1 10 30 40 50
3 30 40 10 50
Run Code Online (Sandbox Code Playgroud)

对于我的应用程序,我可以使用一种假设只有四列的解决方案,尽管通用解决方案当然会更好。

akr*_*run 5

这是一个选项base R- 循环遍历行apply,检查重复项(anyDuplicated- 返回第一个重复项的索引,如果没有重复项,则返回 0),然后取反(!- 使 0 变为 TRUE ,所有其他变为 FALSE )以子集化行

df[!apply(df, 1, anyDuplicated),]
Run Code Online (Sandbox Code Playgroud)

-输出

  x  y  z  w
1 10 30 40 50
3 30 40 10 50
Run Code Online (Sandbox Code Playgroud)