gpt4 book ai didi

在 R 中按月检索客户的独特比例

转载 作者:搜寻专家 更新时间:2023-10-30 23:28:37 25 4
gpt4 key购买 nike

我正在使用一个记录用户驱动事件的大型电子数据库。本质上,我想获得一整年每月新用户对该服务的比例/百分比。以下只是数据的模拟示例:-

    UserId    Month   UserEventId

Tyrhjj01 Jan 0998907
Fghhey21 Jan 0989892
Hyhkio52 Jan 7782901
hejdoe78 Jan 3889201
Tyrhjj01 Feb 7829930
sjjwilsn Feb 7728910
Tyrhjj01 Feb 9203749
nnkilo89 Feb 7728912
Fghhey21 Feb 4463782

...等等。如您所见,有些客户经常使用该服务,而有些客户在 2 月份是唯一的。我想获得一定比例的老客户和系统独有的客户。我正在附上一个插图,以帮助更好地理解。

新老客户的百分比:

img .

我尝试了 dplyr 和 data.table 中的几个示例,但无济于事。任何帮助将不胜感激!

最佳答案

如果您为每个月创建一个包含唯一用户的新数据集,那么您可以使用 data.table 中的 rowid 来查看它们是否存在于 df 中 在前几个月。

library(data.table)
setDT(df)

users <- df[, .(user = unique(UserId)), Month]
users[, visit := rowid(user)] # create variable for number of months user has visited
users[, .(new_pct = mean(visit == 1)), Month]

# Month new_pct
# 1: Jan 1.0
# 2: Feb 0.5

或者使用 tidyverse

编辑:如果您的 Month 列实际上是字符月份名称,则下面的解决方案不起作用。如下所示,dplyr 分组会重新排序您的数据(与 data.table 不同),因此使用此方法会产生不正确的结果。我将保留下面的代码,因为如果 Month 是日期类列,它就可以工作。

df %>% 
group_by(Month) %>%
do(user = unique(.$UserId)) %>%
unnest %>%
group_by(user) %>%
mutate(visit = row_number()) %>%
group_by(Month) %>%
summarise(new_pct = mean(visit == 1))

# # A tibble: 2 x 2
# Month new_pct
# <chr> <dbl>
# 1 Feb 1.00
# 2 Jan 0.500

使用的数据:

df <- fread("
UserId Month UserEventId
Tyrhjj01 Jan 0998907
Fghhey21 Jan 0989892
Hyhkio52 Jan 7782901
hejdoe78 Jan 3889201
Tyrhjj01 Feb 7829930
sjjwilsn Feb 7728910
Tyrhjj01 Feb 9203749
nnkilo89 Feb 7728912
Fghhey21 Feb 4463782
")

关于在 R 中按月检索客户的独特比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52669762/

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