删除除最后一个实例之外的所有重复项

时间:2013-03-26 16:10:27

标签: r duplicate-removal

所以我在R中有一个数据集,其中以下布局为例:

ID Date Tally
1 2/1/2011 1
2 2/1/2011 2
3 2/1/2011 3
1 2/1/2011 4
2 2/1/2011 5
1 2/1/2011 6
3 2/1/2011 7
4 2/1/2011 8
2 2/1/2011 9

我想删除除了帖子ID的LAST实例之外的所有实例。现在我可以在网上找到的所有东西,我正在使用的功能是移除除FIRST实例之外的所有内容。

所以我的新数据框看起来像是:

ID Date Tally
1 2/1/2011 6
3 2/1/2011 7
4 2/1/2011 8
2 2/1/2011 9

我该怎么做?现在我只能保留第一个实例。我希望它做相反的事情吗?有什么帮助吗?

忍受我,我是R的新手:)

4 个答案:

答案 0 :(得分:13)

这不仅仅是将'fromLast'参数用于duplicated的标准情况吗?

 dat[ !duplicated(dat[, c("ID", "Date")], fromLast=T),]
#---------
  ID     Date Tally
6  1 2/1/2011     6
7  3 2/1/2011     7
8  4 2/1/2011     8
9  2 2/1/2011     9

您的示例不够丰富,无法判断您是否需要在重复测试中使用“日期”列,因此您可以简化。我将其留下来说明duplicated有一个data.frame方法。我更喜欢!duplicatedunique,因为如果您要比较群组,它可以轻松访问集合补充。

答案 1 :(得分:10)

使用!rev(duplicated(rev(ID)))过滤掉除最后一次独特事件之外的所有事件。

要过滤数据集,请使用dataset[!rev(duplicated(rev(dataset$ID))),]

答案 2 :(得分:4)

使用data.table加入,您可以设置mult = 'last'

例如

library(data.table)
DT <- data.table(DF, key = 'id')

# join with the unique ID values
DT[unique(DT[,list(ID)]), mult= 'last']

   ID     Date Tally
1:  1 2/1/2011     6
2:  2 2/1/2011     9
3:  3 2/1/2011     7
4:  4 2/1/2011     8

如果您知道唯一ID,则还可以使用以下任何一种

DT[.(1:4), mult='last']
DT[list(1:4), mult = 'last']

答案 3 :(得分:2)

使用dplyr:

import UIKit

class HomeController: ListController {

  override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "Home"
    self.tabBarController??? // Right now this is a UITabBarController, but I would like to it be a CustomTabBarController 
  }

}