r - 通过匹配两列值来删除观测值

标签 r dplyr

我有数据df。我想在匹配两个列值后删除最后的观察结果,即 cate=Yes ~ value=1

df <- data.frame(id=c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,5,5,6,6,6,6,7,7,7,7,7),
       cate=c('No','Yes','Yes','No','Yes','No','Yes','Yes','Yes','No','No','No','Yes','Yes',
 'No','No','Yes','Yes','No',NA,'No','Yes','Yes','Yes','No','Yes','Yes','Yes','Yes'),
                 value=c(0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0))
df
   id cate value
1   1   No     0
2   1  Yes     0
3   1  Yes     0
4   1   No     0
5   1  Yes     0
6   2   No     0
7   2  Yes     1
8   2  Yes     0
9   2  Yes     0
10  2   No     0
11  3   No     0
12  3   No     0
13  3  Yes     0
14  3  Yes     0
15  3   No     0
16  4   No     0
17  4  Yes     0
18  4  Yes     0
19  5   No     0
20  5  Yes     0
21  6   No     0
22  6  Yes     1
23  6  Yes     0
24  6  Yes     0
25  7   No     0
26  7  Yes     1
27  7  Yes     1
28  7  Yes     0
29  7  Yes     0

我想在匹配 cate=Yes 和 value=1 后删除每个组 ID 的观察结果。

那么预期的输出是

   id cate value
1   1   No     0
2   1  Yes     0
3   1  Yes     0
4   1   No     0
5   1  Yes     0
6   2   No     0
7   2  Yes     1
8   3   No     0
9   3   No     0
10  3  Yes     0
11  3  Yes     0
12  3   No     0
13  4   No     0
14  4  Yes     0
15  4  Yes     0
16  5   No     0
17  5  Yes     0
18  6   No     0
19  6  Yes     1
20  7   No     0
21  7  Yes     1

最佳答案

  • 我们可以使用 slice 选择从 1 到所需行的索引,同时考虑 NA ,因此我们将 coalescen() 选择所有不满足条件的行。
library(dplyr)

df |> group_by(id) |> 
      slice(1:coalesce(which(cate == "Yes" & value == 1)[1] , n()))
  • 输出
# A tibble: 21 × 3
# Groups:   id [7]
      id cate  value
   <dbl> <chr> <dbl>
 1     1 No        0
 2     1 Yes       0
 3     1 Yes       0
 4     1 No        0
 5     1 Yes       0
 6     2 No        0
 7     2 Yes       1
 8     3 No        0
 9     3 No        0
10     3 Yes       0
# … with 11 more rows

关于r - 通过匹配两列值来删除观测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73377930/

相关文章:

windows - 如何在 Windows 中执行 .r 文件

r - 将列表中的行与 R 中有意义的重复行绑定(bind)

r - is.vector() 什么时候返回 true?

r - 热图中每个变量的多个填充图例

r - 使用 dplyr 将函数应用于表的每一行?

r - Dygraph 的 %>% 替换了 Dplyr 的

python - 使用 pandas 数据框中最近创建的属性来创建新属性

r - 将数字列从计数转换为比例的整洁方法

html - 编辑的 css 不会更改 rmarkdown xaringan 演示文稿

删除方面分组变量中没有数据的因素