如何在 R 中进行嵌套子集设置

Sim*_*mel 3 r subset dataframe dplyr tidyverse

DATA下面的内容中,我尝试使用包含和的 sfilter以及包含.DistrictStatusMonitorNeverNo Answer

然后,在每个Districts 中,我只想要is或和is 的filter行。StatusMonitorNeverAnswerNo

所需的输出应该只是第一行、第三行、第十行和最后一行(见下文)。这可能吗?

我尝试了以下操作(没有成功):

library(dplyr)
  group_by(DATA, District) %>% 
  filter(Status %in% c("Monitor","Never")  & Answer == "No") %>% 
  ungroup()
Run Code Online (Sandbox Code Playgroud)
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
")
Run Code Online (Sandbox Code Playgroud)

r2e*_*ans 7

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

\n
group_by(DATA, District) %>%\n  filter(\n    all(c("Monitor","Never") %in% Status),\n    Status %in% c("Monitor", "Never"),\n    Answer == "No"\n  ) %>%\n  ungroup()\n# # A tibble: 4 \xc3\x97 3\n#   District Status  Answer\n#   <chr>    <chr>   <chr> \n# 1 A        Monitor No    \n# 2 A        Never   No    \n# 3 D        Never   No    \n# 4 D        Monitor No    \n
Run Code Online (Sandbox Code Playgroud)\n