我正在处理一些州选举数据,其中包含不同年份的候选人名单。他们中有些人参加了一个计划,我很想知道候选人为何进入和退出该计划。我想要的是列出一些已经参加了几年但没有参加过的人的名字。我想从名单中剔除始终或从未参加的所有候选人。
数据看起来像这样:
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] 删除。
我来说两句