R - 根据另一行的值删除行

R - delete rows according to the value of another row

我是 R 的初学者,但感谢 Whosebug 社区,我正在进步! 但是,我遇到了一个问题:

我有一个包含 5 个变量的数据集:

id_house    id_ind   indicator_tb_men
1             1       1
1             2       0
2             1       1
3             1       0
3             2       0
3             3       0
4             1       1
5             1       0

我想删除第一个人没有回答调查的所有家庭成员。

所以它会给出:

id_house    id_ind   indicator_tb_men
1             1       1
1             2       0
2             1       1
4             1       1

这里使用 dplyr 是一种方法:

library(dplyr)

df %>%
  arrange(id_house, id_ind) %>%
  group_by(id_house) %>%
  filter(first(indicator_tb_men) != 0)

#  id_house id_ind indicator_tb_men
#     <int>  <int>            <int>
#1        1      1                1
#2        1      2               NA
#3        2      1                1
#4        4      1                1

数据

df <- structure(list(id_house = c(1L, 1L, 2L, 3L, 3L, 3L, 4L, 5L), 
id_ind = c(1L, 2L, 1L, 1L, 2L, 3L, 1L, 1L), indicator_tb_men = c(1L, 
NA, 1L, 0L, NA, NA, 1L, 0L)), class = "data.frame", row.names = c(NA, -8L))

在基础中我们可以使用嵌套逻辑

df[df$id_house %in% df$id_house[df$id_ind == 1 & df$indicator_tb_men == 1],]

  id_house id_ind indicator_tb_men
1        1      1                1
2        1      2               NA
3        2      1                1
7        4      1                1

数据:使用