计算 1,000 列事件之间的天数差异

Calculate diff in days between events for 1,000 columns

我正在尝试测试我的真实世界数据在假设概率分布中的位置。我创建了一个 1000 随机 Var 的 DF,并对其重新编码以匹配我的真实世界事件的概率。

接下来我要计算 "time between Events"(IE,每个 1 发生之间的时间),然后存储每个随机变量的事件之间的平均时间,以便我可以绘制它。 (最终目标是 1000 个均值的 1 个变量)

下面的代码我创建了随机变量,重新编码它们,并添加了一个日期范围。

dat <-as.data.frame( matrix (0, nr=1303, nc = 1000))
for (i in 1:1000){x<- runif(1303)
dat[,i] <-x}
#calculating values to 0,1.
dat[,] <- ifelse(dat[,] < "0.01611665", 1, ifelse(dat[,] > "0.01611665", 0, 1 ))
#creating date range
start_date <- as.Date("2016/10/10")
Date<- seq(start_date, by = "day", length.out = 1303)
#add date vector to a df
dat$date <- Date

我不确定如何计算所有变量的事件之间的时间。我已经在下面的代码中为我的真实世界数据(1303 天内只有 21 个事件)完成了它,但我不确定如何缩放它以应用于所有 1000 个随机变量,或者如何提取 1000 个均值 "time between events" 到一个单独的 df.

 events <- sort(sample(never1$date1, 21))
    d <- c(NA, diff(events))

我知道我的解决方案涉及 lubridate 和 dplyr 以及滚动计算。但是我的 googleFU 帮不上什么忙。

谢谢!

已解决。

dat <- as.data.frame( matrix(0, nr=1303, nc = 1000) )

  #Generate random numbers
  for (i in 1:1000){
    x<- runif(1303) 
    dat[,i] <-x
  }


  #Split random numbers into zero and ones at the desired prevalence
  dat[,] <- ifelse(dat[,] < "0.01611665", 1, ifelse(dat[,] > "0.01611665", 0, 1 ) )

  length(dat[,1])

  plot.df <- as.data.frame(matrix(0, nr = 1000, nc = 3))
  colnames(plot.df) <- c("Mean","Sd","Median")

  #Check the run length encoding
  for (i in 1:1000){
  runs <- rle(dat[,i])
  #Check the length of runs
  runs$lengths
  #Remove the incident days and leave the length of 'no incident' runs
  noinc.days   <- runs$lengths[which(runs$lengths > 1)]
  plot.df[i,1] <- mean(noinc.days)
  plot.df[i,2] <- sd(noinc.days)
  plot.df[i,3] <- median(noinc.days)

后跟适当的 GGplots。