R - 根据另一行的值删除行
R - delete rows according to the value of another row
我是 R 的初学者,但感谢 Whosebug 社区,我正在进步!
但是,我遇到了一个问题:
我有一个包含 5 个变量的数据集:
- id_house代表每个家庭的id
- id_ind 是一个 id,家庭中第一个人的值为 1,第二个人为 2,第三个人为 3...
- Indicator_tb_men 表示第一个人是否回答了调查(1 = 是,0 = 否)。所有其他家庭成员都取值 0。
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
数据:使用
我是 R 的初学者,但感谢 Whosebug 社区,我正在进步! 但是,我遇到了一个问题:
我有一个包含 5 个变量的数据集:
- id_house代表每个家庭的id
- id_ind 是一个 id,家庭中第一个人的值为 1,第二个人为 2,第三个人为 3...
- Indicator_tb_men 表示第一个人是否回答了调查(1 = 是,0 = 否)。所有其他家庭成员都取值 0。
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
数据:使用