关于如何根据 R 中的条件删除行有什么想法吗?

Mei*_*ing 3 r dplyr tidyverse

我是 R 新手,我一直在使用 dplyr 包进行总结。我无法找到以下问题的解决方案。

我的小标题:8 x 3 如下:

df <- tibble(id = c(1, 1, 1, 1, 1, 2, 2, 2 ),
                 block = c(2, 2, 2, 3, 3, 2, 2, 3), 
                 answer = "TRUE")
Run Code Online (Sandbox Code Playgroud)
ID 堵塞 回答
1 2 真的
1 2 真的
1 2 真的
1 3 真的
1 3 真的
2 2 真的
2 2 真的
2 3 真的

ID -> 参与者 ID

块 -> 最高正确块

我只想保留每个参与者的最高分块分数,但最高分块分数定义为每个分块条件中至少有两个正确(TRUE)的最高分。

在上面的示例中,参与者 1 的最高分块得分为 3,因为在分块 3 处至少有两个正确答案。参与者 2 的最高得分为 2。请参见下面的示例。

最终输出应该是这样的:

ID 堵塞 回答
1 3 真的
2 2 真的

有人知道我应该如何开始吗?或者有什么包可以解决这个问题?

我设法使用slice_tail参数维护每个参与者的最后一行,但不知道如何从那里继续

Ron*_*hah 5

filter仅保留那些具有>= 2 TRUE值的块,稍后为每个块id保留具有值的行max block

library(dplyr)

df %>%
  group_by(id, block) %>%
  filter(sum(as.logical(answer)) >= 2) %>%
  group_by(id) %>%
  slice(which.max(block)) %>%
  ungroup

#    id block answer
#  <dbl> <dbl> <chr> 
#1     1     3 TRUE  
#2     2     2 TRUE  
Run Code Online (Sandbox Code Playgroud)