簡體   English   中英

R - 根據另一行的值刪除行

[英]R - delete rows according to the value of another row

我是 R 的初學者,但感謝 Stackoverflow 社區,我正在改進,但是:我遇到了一個問題:

我有一個包含 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

數據:使用Ronak Shah 的數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM