Включение всех строк для идентификатора, если идентификатор соответствует условию один раз в данных панели в R - PullRequest
1 голос
/ 17 марта 2019

Извините, если на подобный вопрос уже был дан ответ, но я не могу найти какие-либо сообщения, помогающие мне.Я хотел бы определить две отдельные группы вмешательства (связанные с этим предыдущим вопросом, который я задал здесь ).У меня несбалансированный набор данных панели, который скомпрометировал более 100 000 идентификаторов.Одна строка = один месяц данных для определенного идентификатора.

Вмешательство 1: Я хочу включить все строки идентификатора, если идентификатор соответствует условию (схема 1 == 1) хотя бы один раз в данных ине соответствует другому условию (Scheme2 == 0).

Вмешательство 2. Я хочу включить в данные все строки идентификатора, если идентификатор соответствует обоим условиям хотя бы один раз (Scheme1 == 1 и Scheme2== 1).

Я использовал такой код, чтобы получить ControlGroup:

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

Однако, если я попытаюсь применить аналогичный код, чтобы получить различные группы вмешательства, я получу толькостроки для идентификаторов, где Scheme1 == 1 и Scheme2 == 0 (вмешательство 1) или Scheme == 1 и Scheme2 == 1 (вмешательство 2).В идеале я хотел бы, чтобы для каждой группы вмешательства были все строки идентификаторов, которые входят в схему 1, или обе схемы, включая строки, в которых идентификатор не вошел в схему (ы).

1 Ответ

0 голосов
/ 17 марта 2019

Вмешательство 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)
...