r - 在 R 中保留最近的重复行
问题描述
所以,我有一个包含账单编号、日、月、年和总价值的数据集。有一堆重复的公牛号码,我想保留第一个。如果有相同日期、月份和年份的重复项,我想保留总价值最高的那个。
例如,如果数据集现在看起来像这样:
Bill Number Day Month Year Ag. Value
1 10 4 1998 10
1 11 4 1998 14
2 23 11 2001 12
2 23 11 2001 9
3 11 3 2005 8
3 12 3 2005 9
3 13 3 2005 4
我希望结果如下所示:
Bill Number Day Month Year Ag. Value
1 10 4 1998 10
2 23 11 2001 12
3 11 3 2005 8
我不确定是否有一个命令我可以使用并且只是介绍所有这些参数,或者我是否应该分阶段进行,但无论哪种方式我都不确定如何开始。我用过duplicate()
然后unique()
卡住了。
谢谢!
解决方案
library( data.table )
dt <- fread("Bill_Number Day Month Year Ag_Value
1 10 4 1998 10
1 11 4 1998 14
2 23 11 2001 12
2 23 11 2001 9
3 11 3 2005 8
3 12 3 2005 9
3 13 3 2005 4", header = TRUE)
dt[ !duplicated( Bill_Number), ]
# Bill_Number Day Month Year Ag_Value
# 1: 1 10 4 1998 10
# 2: 2 23 11 2001 12
# 3: 3 11 3 2005 8
或者
dt[, .SD[1], by = .(Bill_Number) ] #other approach, a bit slower
推荐阅读
- cytoscape.js - 如何在不使用 cytoscape.js 重绘图形的情况下删除特定边?
- javascript - javascript里面的javascript
- java - Error executing tests in Travis CI with JaCoCo
- reactjs - 在反应钩子形式中,如何将数据从一个属性复制到另一个状态?
- django - 如何在 Nginx/uWSGI 服务器上访问 Django 项目的 git 分支?
- java - 在 SpringBoot 中将列表绑定到模型属性
- scala - 在 Scala 中处理 InputStream
- php - 你们能帮我完成我的laravel项目吗?
- azure - 使用 Microsoft Graph 阻止管理员用户登录
- c# - 存在列表导航属性时 AutoDetectChanges 不起作用