首页 > 解决方案 > 过滤问题 i R,删除重复值并仅保留最小值

问题描述

我正在尝试在 R 中使用数据库并且需要添加一些过滤器。在选定的路线上,您必须换乘巴士才能到达最终目的地。我已经过滤了这些路由,但我需要删除重复值并保留最小值。所以我可以看到所选目的地有多少班次。

当前过滤器代码:

filterroutes <- c("5", "10")
busroutes <- database %>% filter(Route %in% filterroutes)

路由 5 和 10 过滤后的表

Route Time NDepartures
5      2   1
5      3   1
5      3   1
5      4   1
5      5   1
10     1   1
10     3   3
10     4   2
10     6   1
10     7   2

我想保留具有唯一时间戳的路线,如果重复,请保留具有最小时间戳的路线NDepartures

应该返回

Route Time NDepartures
5      2   1
5      3   1
5      3   1
5      4   1
5      5   1
10     1   1
10     6   1
10     7   2

有人告诉我我可以使用 aNDepartures == min(NDepartures)但我无法让它工作。

标签: rfilter

解决方案


library(dplyr)
busroutes %>% 
   group_by(Time) %>% 
   #n() equals # of obs in each group "Time"
   filter(n()==1 | (n()>1 & NDepartures==min(NDepartures))) %>%
   ungroup()

# A tibble: 8 x 3
# Groups:   Time [7]
  Route  Time NDepartures
  <int> <int>       <int>
1     5     2           1
2     5     3           1
3     5     3           1
4     5     4           1
5     5     5           1
6    10     1           1
7    10     6           1
8    10     7           2

推荐阅读