在R中查找状态更改

特里马科

我正在处理一些州选举数据,其中包含不同年份的候选人名单。他们中有些人参加了一个计划,我很想知道候选人为何进入和退出该计划。我想要的是列出一些已经参加了几年但没有参加过的人的名字。我想从名单中剔除始终或从未参加的所有候选人。

数据看起来像这样:

         names program year
1   Smith John       1 2008
2   Smith John       1 2010
3  Oliver Mary       0 2008
4  Oliver Mary       1 2010
5  Oliver Mary       1 2012
6 O'Neil Cathy       0 2010
7 O'Neil Cathy       1 2012

因此,在这种情况下,我想将Mary Oliver和Cathy O'Neil收集在列表中,而不是John Smith。我曾考虑过在dplyr中使用group_by,但是我不确定下一步要去哪里。关于如何设置此操作有什么想法?

阿卜杜

尝试过滤掉program中的值之和小于列中每个名称的行数的names列。我认为以下应该做:

数据:

df1 <- structure(list(names = c("Smith John", "Smith John", "Oliver Mary", 
"Oliver Mary", "Oliver Mary", "ONeil Cathy", "ONeil Cathy"), 
    program = c(1L, 1L, 0L, 1L, 1L, 0L, 1L), year = c(2008L, 
    2010L, 2008L, 2010L, 2012L, 2010L, 2012L)), .Names = c("names", 
"program", "year"), class = "data.frame", row.names = c(NA, -7L
))

代码:

df1 %>% group_by(names) %>% dplyr::filter(sum(program) != n())

输出:

        names program  year
        <chr>   <int> <int>
1 Oliver Mary       0  2008
2 Oliver Mary       1  2010
3 Oliver Mary       1  2012
4 ONeil Cathy       0  2010
5 ONeil Cathy       1  2012

我希望这有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章