gpt4 book ai didi

r - 在事件之前计算行数 - data.table

转载 作者:行者123 更新时间:2023-12-04 12:12:11 24 4
gpt4 key购买 nike

我有一个数据集,其中包含用户和顺序事件以及中间的非事件。

DT = data.table(user = c("1001","1001","1001","1001","1001","1001",
"1002","1002","1002","1002"),
event = c(NA,"e1",NA,NA,NA,"e2",
"e1",NA,NA,"e2"))

我希望能够在用户组发生事件之前计算行数(非事件)。预期结果:
   user  event  rows.before.event
1: 1001 NA NA
2: 1001 e1 1
3: 1001 NA NA
4: 1001 NA NA
5: 1001 NA NA
6: 1001 e2 3
7: 1002 e1 0
8: 1002 NA NA
9: 1002 NA NA
10: 1002 e2 2

试过 rleid()但没有成功。欢迎任何建议。

最佳答案

DT[, count := .N-1, by = .(user, rev(cumsum(rev(!is.na(event)))))][
is.na(event), count := NA]
# user event count
# 1: 1001 NA NA
# 2: 1001 e1 1
# 3: 1001 NA NA
# 4: 1001 NA NA
# 5: 1001 NA NA
# 6: 1001 e2 3
# 7: 1002 e1 0
# 8: 1002 NA NA
# 9: 1002 NA NA
#10: 1002 e2 2

关于r - 在事件之前计算行数 - data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37214952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com