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

问题描述 投票:1回答:1

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

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

干预2:如果ID在数据中满足两个条件至少一次,我希望包括ID的所有行(Scheme1 == 1和Scheme2 == 1)。

我使用这样的代码来获取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尚未进入方案的行。

r panel-data
1个回答
0
投票

干预1:

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

干预2:

Inter2 <- DF %>% filter(ID %in% (DF %>% filter(Scheme1==1 & Scheme2==1))$ID)
© www.soinside.com 2019 - 2024. All rights reserved.