我想知道是否有一种方法可以按组进行条件列计数,如果满足某个值(在本例中为0),则在row_number或rowid上加1。例如:
df<-data.frame(group=c(1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3,3,3,3),
condition=c(1,0,1,1,1,0,0,1,1,0,1,1,0, 1),
want=c(1, 3, 4,5,1,3,5,6,7,2,3,4,6,7))
group condition want
1 1 1 1
2 1 0 3
3 1 1 4
4 1 1 5
5 2 1 1
6 2 0 3
7 2 0 5
8 2 1 6
9 2 1 7
10 3 0 2
11 3 1 3
12 3 1 4
13 3 0 6
14 3 1 7
我认为这可能涉及到为每个组创建一个row_number,然后创建一个自定义的row_number,但我愿意接受建议。这是一种在出现0时“分解”数据的变通方法。
2条答案
按热度按时间wgeznvg71#
使用
dplyr
,对于每组数据(group-by(group)
),我们可以添加一个列,该列具有从1
到每个group
长度的计数器(即n()
)。通过添加condition == 0
的累积和,该计数器将在满足所需条件时再跳一次。* 输出:*
* 数据:*
m0rkklqb2#
您可以: