如何根据一个标准过滤变量,同时汇集其他信息?

How to filter a variable based on one criteria while pool other information at the same time?

此数据代表 3 人。我想过滤掉至少有一次错误为 5 的人。

id  error
1   0
1   0
1   5
2   0
2   5
2   0
3   0
3   0
3   0

structure(list(id = structure(c(1, 1, 1, 2, 2, 2, 3, 3, 3), format.stata = "%9.0g"), 
        error = structure(c(0, 0, 5, 0, 5, 0, 0, 0, 0), format.stata = "%9.0g")), row.names = c(NA, 
    -9L), class = c("tbl_df", "tbl", "data.frame"))

如果我使用此代码:

df %>% 
  group_by(id) %>% 
  filter(error > 0)

如下所示,我只会得到出现错误时的出现次数,但我不会得到同一个人前后的数据。

id  error
1   5
2   5

但是我想得到这个输出,因为我一直在关注人们,并且想看看之前和之后发生了什么

   id   error
    1   0
    1   0
    1   5
    2   0
    2   5
    2   0
 

有人可以指导我吗?

这个有用吗:

library(dplyr)
df %>% group_by(id) %>% filter(any(error == 5))
# A tibble: 6 x 2
# Groups:   id [2]
     id error
  <dbl> <dbl>
1     1     0
2     1     0
3     1     5
4     2     0
5     2     5
6     2     0

我们也可以使用 %in% 来完成 filter

library(dplyr)
df %>%
    group_by(id) %>% 
    filter(5 %in% error)

-输出

# A tibble: 6 x 2
# Groups:   id [2]
#     id error
#  <dbl> <dbl>
#1     1     0
#2     1     0
#3     1     5
#4     2     0
#5     2     5
#6     2     0