在R中删除每组的最后记录(ID)

时间:2017-08-25 16:24:41

标签: r

这是我的数据:

> PayInstance   EMPLID   DEPTID JOBCODE PAY_FREQUENCY MAX._TTL.GROSS
> 1 1 23231606  100880             W           1203
> 2 1 23231606  100880             W            597
> 3 1 23231606  100880             W            625
> 4 1 23231606  100880             W            245
> 5 1 23231606  100880             W            480
> 6 1 23231606  100880             W            758
> 7 1 23231606  100880             W            599
> 1 2 23231606  100880             W            551
> 2 2 23231606  100880             W            767
> 3 2 23231606  100880             W            880
> 3 2 23231606  100880             W            557
> 4 2 20441606  100880             W            909

以下是我想做的事情:

> PayInstance   EMPLID   DEPTID JOBCODE PAY_FREQUENCY MAX._TTL.GROSS
> 1 1 23231606  100880             W           1203
> 2 1 23231606  100880             W            597
> 3 1 23231606  100880             W            625
> 4 1 23231606  100880             W            245
> 5 1 23231606  100880             W            480
> 6 1 23231606  100880             W            758
> 1 2 23231606  100880             W            551
> 2 2 23231606  100880             W            767
> 3 2 23231606  100880             W            880
> 3 2 23231606  100880             W            557

这是我的开始,但我假设我需要为此编写自己的功能,希望有人可以提供帮助,因为我确定我不是

df %>%
  group_by(EMPLID) %>%

1 个答案:

答案 0 :(得分:0)

除了评论中完全有效的答案之外,还有使用dplyrdata.table

的替代解决方案
## Data table
setDT(df)
df[, obs := 1:.N]
df[df[, max(obs) != obs, by = EMPLID]$V1, ]


## Dplyr
df$obs <- 1:nrow(df)
df %>% group_by(EMPLID) %>% filter(max(obs) != obs)