【发布时间】:2014-11-26 21:11:47
【问题描述】:
尝试使用 R 中的 data.table 修复重复数据删除问题。
A 列是名称列表,其中一些名称出现多次。 B 列是日期列表。我还想复制许多其他列(Name on Date 发生的事情。)
但是,我只想查看新数据表中每个人的最多活动,其中每个名称对应于最近的日期有 1 个条目。
示例数据
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。但是,我不能假设要选择的数据是第一个或最后一个,除非您可以建议一种方法来操作我的数据以在设置密钥后使其如此。
【问题讨论】:
标签: r data.table