自上次活动以来经过的代码天数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自上次活动以来经过的代码天数相关的知识,希望对你有一定的参考价值。

我想编码自用户上次活动以来进行流失分析所经过的天数。

我尝试过在相关主题中找到的代码,但它不起作用:

da = da %>%
  arrange(dayid) %>%
group_by(dayid) %>%
  mutate(dayssincelastactivity = c(NA, diff(dayid))

让我们说这是数据。 active表示用户当天是否处于活动状态。我想添加变量dayssincelastactivity,它表示自用户上一个活动日以来经过的天数。

da <- data.frame(dayid = c(1,2,3,4,5,6,7,8), active = c(1,1,0,0,0,1,1,1), dayssincelastactivity = c(1,1,2,3,4,1,1,1))

da
  dayid active dayssincelastactivity
1     1      1                     1
2     2      1                     1
3     3      0                     2
4     4      0                     3
5     5      0                     4
6     6      1                     1
7     7      1                     1
8     8      1                     1
答案

使用cumsumseq_along每组创建一个分组变量。

with(da, ave(dayid, cumsum(active == 1), FUN = seq_along))
#[1] 1 1 2 3 4 1 1 1

您也可以将其翻译为dplyr

library(dplyr)

da %>%
  group_by(group = cumsum(active == 1)) %>%
  mutate(new_val = row_number()) %>%
  ungroup() %>%
  select(-group)

#  dayid active dayssincelastactivity new_val
#  <dbl>  <dbl>                 <dbl>   <int>
#1     1      1                     1       1
#2     2      1                     1       1
#3     3      0                     2       2
#4     4      0                     3       3
#5     5      0                     4       4
#6     6      1                     1       1
#7     7      1                     1       1
#8     8      1                     1       1

以上是关于自上次活动以来经过的代码天数的主要内容,如果未能解决你的问题,请参考以下文章

Google表格 - 自上次日期以来的天数一系列单元格

熊猫:自某个日期以来经过的天数

获取自上次增加 Prometheus 计数器以来经过的时间

ansi sql如何选择自表中最早时间戳以来的天数

跟踪自上次尝试______以来的时间

Python - 如何计算自 X 日期以来经过的时间?