首页 > 解决方案 > 删除有条件的重复项

问题描述

我需要删除重复的行。行和条件。请在示例数据框下方找到。

Sr. Invoice Status    Name
1   XXX     Booked    ABC
2   YYY     Booked    DEF
3   YYY     Cancelled DEF
4   ZZZ     Booked    GHI
5   ZZZ     Changed   GHI

我需要删除重复的发票和状态已取消的两个实例。

这是数据框的样子:

Sr. Invoice Status    Name
1   XXX     Booked    ABC
2   ZZZ     Booked    GHI
3   ZZZ     Changed   GHI

我需要为已删除的集合分离数据框。那是:

Sr. Invoice Status    Name
1   YYY     Booked    DEF
2   YYY     Cancelled DEF

标签: r

解决方案


给定这样的数据集:

> d
  Sr Invoice    Status Name
1  1     XXX      Book   AB
2  2     YYY      Book   DE
3  3     YYY Cancelled   DE
4  4     ZZZ      Book   GH
5  5     ZZZ   Changed   GH

此表达式查找任何具有已取消状态的发票代码:

> d$Invoice[d$Status=="Cancelled"]
[1] "YYY"

然后这个表达式为所有有或没有这些代码的行返回真或假:

> d$Invoice %in% d$Invoice[d$Status=="Cancelled"]
[1] FALSE  TRUE  TRUE FALSE FALSE

然后,您可以使用该逻辑向量来拆分您的数据框。例如split用于获取两个元素的列表:

> split(d, d$Invoice %in% d$Invoice[d$Status=="Cancelled"])
$`FALSE`
  Sr Invoice  Status Name
1  1     XXX    Book   AB
4  4     ZZZ    Book   GH
5  5     ZZZ Changed   GH

$`TRUE`
  Sr Invoice    Status Name
2  2     YYY      Book   DE
3  3     YYY Cancelled   DE

推荐阅读