在R中按月检索客户端的唯一比例
我正在使用一个记录用户驱动事件的大型电子数据库。基本上,我希望获得全年每月新用户对服务的比例/百分比。以下只是数据的模拟示例:-在R中按月检索客户端的唯一比例,r,database,dplyr,percentage,event-log,R,Database,Dplyr,Percentage,Event Log,我正在使用一个记录用户驱动事件的大型电子数据库。基本上,我希望获得全年每月新用户对服务的比例/百分比。以下只是数据的模拟示例:- UserId Month UserEventId Tyrhjj01 Jan 0998907 Fghhey21 Jan 0989892 Hyhkio52 Jan 7782901 hejdoe78 Jan 3889201 Tyrhjj01 Feb 782
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月份是独一无二的。我想了解一个百分比的老客户和系统特有的客户。我附上一个插图,以帮助更好地理解
新客户与旧客户的百分比:
我尝试了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
使用的数据:
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
")
df到目前为止您尝试了什么,您编写了什么代码来获得该绘图?你到底是如何定义旧的还是新的?@camille好的,所以首先我尝试(原谅我,对R来说还是比较新的):setDT(df)[,(count=uniqueN(UserId)),by=Month]没有达到预期的结果。然后我尝试使用dplyr:-df%>%group\u by(Month)%>%summary(n=n\u distinct(UserId))认为我可以手工计算新老客户的比例。但仍然不是期望的结果。请使用dput()
(而不是str
或head
或图片/屏幕截图)和您正在处理的代码共享您的数据样本,以便其他人可以提供帮助。请参阅此处的更多信息@camille旧客户是当月以前使用过服务的客户,新客户是指当月以前未使用过服务的客户。希望这能澄清问题:)@Tung谢谢。这张图片只是为了向其他人说明我正在努力实现的目标。两种解决方案都很有效,尤其是数据表一!非常感谢:)
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
")