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

标签 r database dplyr percentage event-log

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

    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/

相关文章:

r - 将 x 标签放在条形图的顶部并使其朝向 x 轴对齐

mysql - 优化 MySql 表中的索引

database - 无法在 Postgres 10 (Windows Server 2016) 上成功安装 TimescaleDB

r - 根据组属性创建虚拟变量

r - 用dplyr联接操作替换数据框的子集

r - 使用列向量索引多维表

r - 如何将普通的ggplot与cowplot中的多面ggplot对齐?

ROracle - dbWriteTable,日期列

ios - 上传图像以解析数据库

r - Dplyr 中的条件评估