R 反向行号函数
我希望在data.table中传递一个行号,但是,我希望根据特定条件conv反向计数,在这种情况下,conv的条件是0,之前的每个事件都是count-1,按id排序R 反向行号函数,r,data.table,R,Data.table,我希望在data.table中传递一个行号,但是,我希望根据特定条件conv反向计数,在这种情况下,conv的条件是0,之前的每个事件都是count-1,按id排序 id group event 1 a click 2 a click 3 a conv 4 b click 5 b conv 输出如下所示: id group event num 1 a
id group event
1 a click
2 a click
3 a conv
4 b click
5 b conv
输出如下所示:
id group event num
1 a click -2
2 a click -1
3 a conv 0
4 b click -1
5 b conv 0
我使用which.max,所以在有两个conv的情况下,正计数在第一个conv之后开始。序号N相当于dplyr中的行号
我使用which.max,所以在有两个conv的情况下,正计数在第一个conv之后开始。序号N相当于dplyr中的行号
dplyr替代方案,假设每个组只有一个conv。我们可以用组中conv所在的索引减去当前行数。当组中存在conv以外的行时,这也会起作用
library(dplyr)
df %>%
group_by(group) %>%
mutate(num = row_number() - which(event == "conv"))
# id group event num
# <int> <fct> <fct> <int>
#1 1 a click -2
#2 2 a click -1
#3 3 a conv 0
#4 4 b click -1
#5 5 b conv 0
dplyr替代方案,假设每个组只有一个conv。我们可以用组中conv所在的索引减去当前行数。当组中存在conv以外的行时,这也会起作用
library(dplyr)
df %>%
group_by(group) %>%
mutate(num = row_number() - which(event == "conv"))
# id group event num
# <int> <fct> <fct> <int>
#1 1 a click -2
#2 2 a click -1
#3 3 a conv 0
#4 4 b click -1
#5 5 b conv 0
如果在conv之后有一行呢?在我的情况下,不应该有一行,但是如果有,则正数1,2,3等。如果在conv之后有一行呢?在我的情况下,不应该有一行,但是如果有,则正数1,2,3等。。