我有一个包含两列的数据框,如下所示,
Name Indicator
DeAngelo Williams 1
Marcus Brown 1
Elaine Nelson 2
Steve Olson 3
Jennifer Carter 1
Michael Johnson 2
Angela Brawley 3
Dax Shepard 4
我要做的是组合指标列值为1的所有名称,直到遇到下一个值1,最终输出应如下所示。
Name
-------
DeAngelo Williams
Marcus Brown,Elaine Nelson,Steve Olson
Jennifer Carter, Michael Johnson, Angela Brawley, Dax Shepard
我无法想到这个问题的解决方案,所以非常感谢任何有关实现这一目标的帮助。
答案 0 :(得分:2)
我们可以使用aggregate
中的base R
来执行此操作。正如@thelatemail在评论中提到的,通过使用公式方法对逻辑向量Indicator==1
的累积总和创建一个组,我们paste
将“名称”中的元素组合在一起。
aggregate(Name~cbind(Group=cumsum(Indicator==1)), df1, FUN=toString)[2]