【问题标题】:R Studio Randomize Date and TimeR Studio 随机化日期和时间
【发布时间】:2018-11-03 11:52:26
【问题描述】:

我想通过用新的随机日期(从 01.01.2012 到 31.12.2015)和新的随机时间替换原始日期和时间列来匿名数据集。

  • 日期列的格式:d%.m%.Y%

  • 时间列的格式:h:m

数据框由 37.094 行组成。

有什么想法吗?

【问题讨论】:

    标签: r database date random time


    【解决方案1】:

    我们可以使用seq.POSIXt 进行采样。

    # for reproducbility we set a seed.
    set.seed(4242)
    

    采样大小设置为指定大小 37094。 seq.POSIXt 中的 by 现在是 60 秒乘以 15 分钟。将分钟调整为您喜欢的间隔。

    samplesdates <- sample(seq.POSIXt(as.POSIXct("2012-01-01 00:00"), as.POSIXct("2015-12-31 23:59"), by = 60*15), size = 37094, replace = TRUE)
    
    newdates <- as.character(samplesdates, "%d.%m.%Y")
    head(newdates)
    [1] "11.12.2015" "23.05.2013" "01.12.2012" "04.09.2014" "23.10.2014" "27.09.2015"
    
    newtimes <- as.character(samplesdates, "%H:%M")
    head(newtimes)
    [1] "17:00" "01:15" "21:15" "00:30" "19:30" "08:30"
    

    【讨论】:

      【解决方案2】:

      这是一种将日期转换为 unixtime 格式的方法,从范围中随机采样,然后转换回日期。需要进行一些格式化才能获得所需的输出。

      library(lubridate)
      start = as.integer(dmy_hms('01-01-2012 00:00:00'))
      end = as.integer(dmy_hms('31-12-2015 00:00:00'))
      randomdates = as.POSIXct(runif(37094, start, end), origin = '1970-01-01')
      randomdatepart = format(randomdates, '%d.%m.%y')
      randomtimepart = format(randomdates, '%H:%M')
      

      【讨论】:

        猜你喜欢
        • 2021-07-30
        • 2023-03-11
        • 2013-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多