r - 在 R 中创建合成用户数据;生成用户标识符变量的问题
问题描述
我正在尝试生成合成用户事件日志数据以用于演示目的。这将是非常基本的特征(总共大约 4 个变量)。这是我到目前为止所拥有的:-
require(wakefield)#for generating the Status variable
require(dplyr)
require(stringi)
set.seed(1)
#data<-data.frame()
eventDate<-seq(as.Date("2015-01-01"), as.Date("2015-12-31"), by = "1 day")
eventDate<-sample(rep(eventDate,each=1000),replace = T)
u <- runif(length(eventDate), 0, 60*60*12) # "noise" to add or subtract from some timepoint
eventDateTime<-as.POSIXlt(u, origin = paste0(eventDate,"00:00:00"))
eventDateTime
eventOutcome<-r_sample_factor(x = c("Passed", "Failed", "Ongoing","Unknown"), n=length(eventDate))
eventOutcome
data<-data.frame(eventDate,eventDateTime,eventOutcome)
head(data)
# eventDate eventDateTime eventOutcome
#1 2015-01-25 2015-01-25 04:48:47 Unknown
#2 2015-05-05 2015-05-05 09:35:22 Unknown
#3 2015-11-28 2015-11-28 08:56:16 Failed
#4 2015-05-23 2015-05-23 02:24:52 Ongoing
#5 2015-01-26 2015-01-26 07:43:52 Failed
#6 2015-10-22 2015-10-22 03:07:14 Passed
这里大约有 365000 行数据。剩下要做的就是添加一个用户标识符变量。如果某些用户可能会在数据集中记录一些交互,而某些用户可能有数十/数百/数千次交互(我希望这个数据集具有这种可变性),我会很高兴。
我可以创建一个用户标识符变量没问题:-
UserId<-stri_rand_strings(1300,6)
但是,如果我将其添加到数据中,它将不起作用:-
data$UserId<-stri_rand_strings(1300,6)
Error in `$<-.data.frame`(`*tmp*`, UserId, value = c("k3QlXs", "gK3eBa", :
replacement has 1300 rows, data has 365000
所以我的要求有两个:如何将用户标识符变量分配给这种数据;我怎样才能使它可变,其中一些用户有 1 或几个交互,而其他用户会频繁出现(即数十、数百、数千次)?
提前感谢您的任何帮助,始终不胜感激:)
解决方案
一种选择可能是为每个用户生成一个 UUID。UUID 如下所示:
c7f2dde5-dfeb-45cb-9720-87b23effd45d
如果使用好的 UUID 生成器,那么几乎不可能多次生成相同的 UUID。R有一个uuid
可以使用的包:
library(uuid)
user_uuid <- UUIDgenerate()
推荐阅读
- php - Wordpress plugins priority
- unity3d - 使用 Unity 的新实体组件系统
- linux - 在为 gdb 打开套接字之前,pin 进程崩溃
- ios - 使用带有搜索栏的键搜索 Firebase 数据库
- javascript - onClick attribute data show
- python - 检查目标时出错:预期 dense_101 的形状为 (143, 3) 但得到的数组的形状为 (855, 3)
- php - 如何使用 Laravel 显示两个相关表中的数据
- java - DataInputStream 的编码
- sql - 无法通过 psql 创建用户表
- java - 使用 Azure AD Graph API 时如何获取用于获取 access_token 的“代码”