根据两列删除重复值

24

我希望根据数据框中2列的匹配情况删除重复的值,必须在行之间匹配v2 & v4才能被删除。

> df

   v1  v2  v3   v4  v5
1  7   1   A  100  98 
2  7   2   A  100  97
3  8   1   C   NA  80
4  8   1   C   78  75
5  8   1   C   78  62
6  9   3   C   75  75

为了得到一个结果

> df

   v1  v2  v3   v4  v5
1  7   1   A  100  98 
2  8   1   C   NA  80
3  8   1   C   78  75
4  9   3   C   75  75

我知道我想要类似于:

df[!duplicated(df[v2] && df[v4]),] 

但这不起作用。

此问题特别涉及数据框,对于那些有数据表的人,请参见在数据表中过滤重复/非唯一行


7
在你提供的示例中,键似乎是v1v4(第一列实际上表示行名)。尝试使用df[!duplicated(df[,c("v1","v4")]),] - nicola
1个回答

63

这将为您提供所期望的结果:

df [!duplicated(df[c(1,4)]),]

6
你好,如果你想使用它的列名(例如v1和v4)而不是列号1、4,该怎么办? - Bustergun
8
你可以使用df[!duplicated(df[c("V1","V4")]),]。该代码的作用是去除DataFrame df中基于"V1"和"V4"两列的重复行,并返回处理后的DataFrame。 - Michael Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接