Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取R中指定日期后剩余用户的百分比_R_Dplyr_Data.table_Grouping_Cluster Analysis - Fatal编程技术网

获取R中指定日期后剩余用户的百分比

获取R中指定日期后剩余用户的百分比,r,dplyr,data.table,grouping,cluster-analysis,R,Dplyr,Data.table,Grouping,Cluster Analysis,我正在使用用户生成的数据集(比如应用程序用户数据或服务),并根据用户行为特征(即使用频率)对其进行聚类。我想知道有多少人,或者说有多大比例的用户在特定日期后停止使用该应用/服务,以及他们来自哪个集群 下面是一个可复制的示例,我希望它是合适的:- library(Pareto) library(uuid) library(ggplot2) library(tidyverse) library(data.table) set.seed(1) n_users <- 100 n_rows <

我正在使用用户生成的数据集(比如应用程序用户数据或服务),并根据用户行为特征(即使用频率)对其进行聚类。我想知道有多少人,或者说有多大比例的用户在特定日期后停止使用该应用/服务,以及他们来自哪个集群

下面是一个可复制的示例,我希望它是合适的:-

library(Pareto)
library(uuid)
library(ggplot2)
library(tidyverse)
library(data.table)
set.seed(1)

n_users <- 100
n_rows <- 3650

relative_probs <- rPareto(n = n_users, t = 1, alpha = 0.3, truncation = 500) 
unique_ids <- UUIDgenerate(n = n_users)

id_sample <- sample(unique_ids, size = n_rows, prob = relative_probs, replace = TRUE)
Date<-seq(as.Date("2015-01-01"), as.Date("2015-12-31"), by = "1 day")
Date<-sample(Date,size = n_rows,replace = T)

df<-data.frame(id_sample,Date)
df
df<-df%>%arrange(Date)


userData<-df%>%
  group_by(id_sample)%>%
  summarise(Count=n())

scaledData<-scale(userData[,2])
scaledData

set.seed(15)
clust<-kmeans(scaledData, centers=5, nstart = 15)

userData$Cluster<-clust$cluster

setDT(userData)[Cluster==1, ClusterName:="Cluster 1"]
userData[Cluster==2, ClusterName:="Cluster 2"]
userData[Cluster==3, ClusterName:="Cluster 3"]
userData[Cluster==4, ClusterName:="Cluster 4"]
userData[Cluster==5, ClusterName:="Cluster 5"]

user_vars<-userData%>%select(id_sample,ClusterName)

df<-merge(df,user_vars,by="id_sample")

df$Month<-lubridate::month(df$Date)

df%>%
  group_by(Month)%>%
  summarise(N_Users=n_distinct(id_sample))
库(帕累托)
图书馆(uuid)
图书馆(GG2)
图书馆(tidyverse)
库(数据表)
种子(1)

n_用户这是一个很好的答案。非常感谢你!
library(lubridate)
how_many=function(df, cluster, my_date) {
  df1=df%>%filter(ClusterName==cluster)
  before=filter(df1, Date<my_date) 
  after=filter(df1,Date>my_date)
  count=0
  for (i in unique(before$id_sample)) {
    if (i %in% after$id_sample) {
      count=count+1
    }
  }
  return(c(count, count/n_distinct(before$id_sample)))
}
how_many(df, "Cluster 4", make_date(2015, 05, 19))

39.0000000  0.9069767