2017-08-01 107 views
0

我有类似下面的数据帧:如何过滤r中的数据帧?

id areaID time 
325 10152 12:55 
325 10221 11:57 
325 10152 10:53 
325 10152 08:35 
525 10152 10:15 
525 10221 16:45 
725 10152 11:55 
825 10152 12:06 
925 10221 18:09 
925 10221 19:45 
935 10152 08:05 
935 10221 10:05 

我想只保留那些组,其中既areaID表示10152和10221是可用的。因此,它应该是这样的:

  • ID areaID表示时间
  • 325 10152 12:55
  • 325 10221 11:57
  • 325 10152 10:53
  • 325 10152 08:35
  • 525 10152 10:15
  • 525 10221 16:45
  • 935 10152 08:05
  • 935 10221 10:05

任何人都可以帮我吗? TIA

回答

3

如果您的数据存储为d,那么使用dplyr的分组过滤器应该这样做。

library(dplyr) 
d %>% 
    group_by(id) %>% 
    filter(10152 %in% areaID & 10221 %in% areaID) 

#> # A tibble: 8 x 3 
#> # Groups: id [3] 
#>  id areaID time 
#> <int> <int> <fctr> 
#> 1 325 10152 12:55 
#> 2 325 10221 11:57 
#> 3 325 10152 10:53 
#> 4 325 10152 08:35 
#> 5 525 10152 10:15 
#> 6 525 10221 16:45 
#> 7 935 10152 08:05 
#> 8 935 10221 10:05 
+0

谢谢乔纳森。但由于某种原因,它不会过滤我的数据。没有错误,甚至没有任何警告。 – Pasha

+0

您的数据是否名为'd'? –

+0

nope。 库(dplyr) Keep_files%>% group_by(deviceid)%>%filter(%areaId中的10152%和%areaId中的10221%) 这是我输入的内容。 – Pasha