如何在 R 中执行嵌套子集

How to do nested subsetting in R

提问人:Simon Harmel 提问时间:10/30/2023 更新时间:10/30/2023 访问量:42

问:

在我的下文中,我正在尝试同时包含 和 并且具有 .DATAfilterDistrictStatusMonitorNeverNoAnswer

然后,在每一行中,我只想看到 where is 或 and is 的行。DistrictfilterStatusMonitorNeverAnswerNo

所需的输出应仅为第 1 行、第 3 行、第 10 行和最后一行(见下文)。这可能吗?

我尝试了以下方法(没有成功):

library(dplyr)
  group_by(DATA, District) %>% 
  filter(Status %in% c("Monitor","Never")  & Answer == "No") %>% 
  ungroup()
DATA <- read.table(h=T, text="
District  Status   Answer
A         Monitor  No    #--> Filter this row
A         Never    Yes
A         Never    No    #--> Filter this row
A         Ever     No
B         Never    Yes
B         Never    No
B         Never    No
C         Former   No
C         Never    No
D         Never    No   #--> Filter this row
D         Monitor  Yes
D         Monitor  No   #--> Filter this row
")
R DataFrame DPLYR Tidyverse 子集

评论


答:

7赞 r2evans 10/30/2023 #1

对于“包括 Monitor 和 Never”,我们需要先使用,然后我们可以继续使用过滤器的其余部分。all(.)

group_by(DATA, District) %>%
  filter(
    all(c("Monitor","Never") %in% Status),
    Status %in% c("Monitor", "Never"),
    Answer == "No"
  ) %>%
  ungroup()
# # A tibble: 4 × 3
#   District Status  Answer
#   <chr>    <chr>   <chr> 
# 1 A        Monitor No    
# 2 A        Never   No    
# 3 D        Never   No    
# 4 D        Monitor No