r - 删除有条件的重复项
问题描述
我需要删除重复的行。行和条件。请在示例数据框下方找到。
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
解决方案
给定这样的数据集:
> 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
推荐阅读
- python-3.x - django check_password 使用正确的密码返回 false
- c# - 在 asp:Gridview 中缺少 Header 左侧的垂直边框
- javascript - 让文本在 'flex-shrink-0' (TailwindCSS) 内动态收缩
- c# - bbb-install:您必须在 Ubuntu 16.04 服务器上运行此命令
- android - Firebase 查询中带有 limitToLast() 的 endAt() 在 android 中无法按预期工作
- loops - 使用C语言中的Loops,如果用户输入元音并且输入的字符数已经达到10,则循环将终止
- javascript - 如何将控制器中 JsonResult 的数据作为 JS 处理
- transactions - Spanner 模拟器 - 挂起交易
- javascript - Jquery:在 Chrome 中工作但在 Firefox 中不工作的代码
- c# - C#序列化没有“key”和“value”关键字的字典