R语言如何生成全天随机分布的时分秒时间列
问题原因
你最初生成date列时使用by = "day"参数生成日间隔的时间序列,每个时间点默认对应当日的0点(受本地时区偏移影响会出现1点的情况),本身没有携带随机时分秒信息,因此提取时间只能得到整点结果。
解决方法
方案1:不修改原有date列,直接生成随机时间列
如果不需要改动原有的日期字段,可直接生成全天随机的时间字符串:
# 一天共86400秒,生成0~86399的随机整数后格式化为时间 data$time <- format(sample(0:86399, nrow(data), replace = TRUE), format = "%H:%M:%S")
方案2:给原有date列增加随机时分秒信息
如果需要让date列本身携带随机时分秒信息,同时保留原有日期不变:
# 给每个日期叠加0~86399的随机秒数 data$date <- data$date + sample(0:86399, nrow(data), replace = TRUE) # 再提取时间即可得到随机分布结果 data$time <- format(data$date, format = "%H:%M:%S")
方案3:生成date列时直接自带随机时分秒
如果还未生成date列,可一步生成覆盖2018-2020年、带随机时分秒的时间序列:
start <- as.POSIXct("2018-01-01 00:00:00") end <- as.POSIXct("2020-12-31 23:59:59") # 秒级间隔采样时间 data$date <- sample(seq(start, end, by = "sec"), nrow(data), replace = TRUE) data$time <- format(data$date, format = "%H:%M:%S")
内容的提问来源于stack exchange,提问作者amatof
相关产品推荐
相关产品推荐

