试图使用R中的data.table解决去重问题。
列A是姓名列表,其中一些姓名出现多次。列B是日期列表。我还想复制其他列(关于“姓名”和“日期”的事件)。
但是,我只想在一个新的datatable中查看每个人最活跃的记录,该记录对应于最近的日期,并且每个名称仅对应一个条目。
以下是示例数据:
答案仅返回每个姓名的第一个(因为这里的行按每个名字最近的日期排序)。但是,如果我设置dt键
如果我在两个列上同时设置键
问题类似于此处发布的问题:Collapsing data frame by selecting one row per group。但是,除非您可以建议一种方法来操作我的数据使其成为设置键后的第一个或最后一个数据,否则我不能假设要选择的数据是第一个或最后一个。
列A是姓名列表,其中一些姓名出现多次。列B是日期列表。我还想复制其他列(关于“姓名”和“日期”的事件)。
但是,我只想在一个新的datatable中查看每个人最活跃的记录,该记录对应于最近的日期,并且每个名称仅对应一个条目。
以下是示例数据:
name.last date
1: Adams 2014-10-20
2: Adams 2014-07-07
3: Barnett 2014-11-06
4: Barnett 2014-09-22
5: Bell 2014-10-22
6: Bell 2014-07-29
7: Burns 2014-09-08
8: Burns 2014-09-03
9: Camacho 2014-08-12
10: Camacho 2014-07-08
11: Casillas 2014-10-07
12: Casillas 2014-07-17
13: Chavez 2014-09-23
14: Chavez 2014-09-17
15: Chavira 2014-07-15
16: Chavira 2014-07-07
17: Claren 2014-10-30
18: Claren 2014-10-23
19: Colleary 2014-11-11
20: Colleary 2014-11-07
答案仅返回每个姓名的第一个(因为这里的行按每个名字最近的日期排序)。但是,如果我设置dt键
setkey(dt,name.last)
以使用unique()
删除重复项,则会按键顺序重新排序表格(按名称字母顺序排序)。然后使用unique(dt)
返回每个名称的第一次出现,这不一定是最近的日期。如果我在两个列上同时设置键
setkeyv(dt,c(name.last,date))
,则无法使用unique()
删除重复项,因为所有键都是唯一的。问题类似于此处发布的问题:Collapsing data frame by selecting one row per group。但是,除非您可以建议一种方法来操作我的数据使其成为设置键后的第一个或最后一个数据,否则我不能假设要选择的数据是第一个或最后一个。