如果 ID 在 R 的面板数据中满足一次条件,则包括 ID 的所有行

Including all rows for an ID if ID meets a condition once in panel data in R

如果类似的问题已经得到回答,我很抱歉,但我似乎找不到任何对我有帮助的帖子。我希望定义两个单独的干预组(与我之前问的这个问题相关 here)。我有一个包含超过 100,000 个 ID 的不平衡面板数据集。一行 = 特定 ID 一个月的数据。

干预1:如果ID在数据中至少满足一次条件(Scheme1 ==1)并且不满足另一个条件(Scheme2 ==0),我想包括该ID的所有行。

干预 2:如果 ID 在数据中至少满足一次条件(方案 1 ==1 和方案 2 ==1),我想包括该 ID 的所有行。

我使用这样的代码来获取 ControlGroup:

DF %>% group_by(ID) %>% mutate(totalSchemes=sum(Scheme1+Scheme2)) %>% filter(totalSchemes==0) -> ControlGroup 

但是,如果我尝试应用类似的代码来获取不同的干预组,我只会获取 ID 行,其中 Scheme1 ==1 和 Scheme2 ==0(干预 1)或 Scheme==1 和 Scheme2 = =1(干预 2)。理想情况下,我希望每个干预组是进入方案 1 或两个方案的 ID 的所有行,包括 ID 未进入方案的行。

干预 1:

Inter1 <- DF %>% filter(ID %in% (DF %>% filter(Scheme1==1 & Scheme2==0))<span class="math-container">$ID & !(ID %in% (DF %>% filter(Scheme2==1))$</span>ID))

干预 2:

Inter2 <- DF %>% filter(ID %in% (DF %>% filter(Scheme1==1 & Scheme2==1))$ID)