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

时间:2019-03-17 10:58:50

标签: r panel-data

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

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

干预2:如果ID在数据中至少满足两个条件一次(方案1 == 1和Scheme2 == 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 个答案:

答案 0 :(得分: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)