gpt4 book ai didi

r - 在 R 中计算每个用户的连续天数

转载 作者:行者123 更新时间:2023-12-02 09:10:26 24 4
gpt4 key购买 nike

我有一个如下所示的 R 数据框,其中包含每个用户和他们活跃的天数列表。

User    date_active          
1 2018-08-27
1 2018-08-28
1 2018-08-29
1 2018-08-31
1 2018-09-01
2 2018-07-05
2 2018-07-06
2 2018-07-07
2 2018-07-08
2 2018-07-10
2 2018-07-11
2 2018-07-12
2 2018-07-20

我想对所有日期进行计数,直到一个间隙,在间隙中重新开始计数。对于上述数据,我的预期输出如下表所示。

User date_active          
1 3
1 2
2 4
2 3
2 1

我最初的猜测是使用 rank 函数或 difftime 但不确定如何获得结果。非常感激任何的帮助!

最佳答案

使用 dplyr 我们可以group_by User 和天数差不等于 1 的天数。我们计算行数然后在每个组中。

library(dplyr)

df %>%
group_by(User, days = c(0, cumsum(diff(date_active) != 1))) %>%
summarise(date_active = n()) %>%
select(-days)

# User date_active
# <int> <int>
#1 1 3
#2 1 2
#3 2 4
#4 2 3
#5 2 1

这是假设您的 date_active 属于 Date 类,或者首先通过

将其转换为 Date
df$date_active <- as.Date(df$date_active)

创建分组变量是这里的关键。见

c(0, cumsum(diff(df$date_active) != 1))
# [1] 0 0 0 1 1 2 2 2 2 3 3 3 4

关于r - 在 R 中计算每个用户的连续天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965296/

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