根据其他列的最大值删除重复项

时间:2017-12-13 19:09:19

标签: r duplicates

每位学生每学期购买多张停车证。试图删除它们,允许它们最长。结合学生ID和学期以获得唯一ID。数据框中有80列,但为此我只处理2。

UniqueID       PermitDuration
01-Fall16              10
01-Fall17              11
01-Fall17              5
01-Fall17              11
02-Fall16              5
02-Fall16              12
02-Fall17              2
02-Fall17              6

我想根据PermitDuration中具有最大值的UniqueID删除UniqueID的重复项。所需的数据框看起来像这样。

UniqueID       PermitDuration
01-Fall16              10
01-Fall17              11
02-Fall16              12
02-Fall17              6

2 个答案:

答案 0 :(得分:1)

您可以使用max。以下是使用data.table的示例:

> library(data.table)
> setDT(mydf)[, PermitDuration[max(PermitDuration)], UniqueID]
    UniqueID V1
1: 01-Fall16 10
2: 01-Fall17 11
3: 02-Fall16 12
4: 02-Fall17  6

甚至使用aggregate

aggregate(PermitDuration ~ UniqueID, mydf, max)

答案 1 :(得分:1)

使用dplyr:

df %>% distinct %>% group_by(UniqueID) %>% top_n(1, PermitDuration)