我有一些列(timestamp,object_id,status和其他一些),我想用它来预测对象的状态。 我有一个假设,即"周时"对地位有重要影响。在"周期"我明白了:星期一23:17。 现在我想我需要用这种格式创建一个列来测试假设。
我已将时间戳转换为POSIXlt:
training_data$TimeStamp = as.POSIXlt(training_data$TimeStamp, "", "%Y-%m-%d %H:%M:%OS")
我还创建了一个只有工作日的专栏。
training_data$TimeStamp_weekday = weekdays(training_data$TimeStamp)
您能否帮我创建一个包含"周时"?
的列我想我还需要只有4"时间段"每小时15分钟,使预测更容易。所以星期一23:17 - > 23:15
0-15 mins -> 0
15-30 mins -> 15
30-45 mins -> 30
45-60 mins -> 45
或类似的东西。
答案 0 :(得分:2)
不需要将任何内容粘贴到lubridate :: weekday结果中。有一个trunc.POSIXt,但据我所知,它不会让你截断到小数区间。而是通过减去7.5分钟(= .0.125小时)截断到前15分钟标记,除以相同的数量,四舍五入然后乘以该数量。这应该具有"四舍五入的效果"到前一个间隔标记。然后使用format.POSIXt获取所需的格式。
> Sys.time()
[1] "2017-12-29 12:24:49 PST"
>
format( as.POSIXct( to convert back to datetime
round( as.numeric( Sys.time() -0.125 * 60*60 )/(0.125 * 60*60) ) * 0.125*60*60 ,
origin="1970-01-01"), "%A %H:%M")
[1] "Friday 12:15"
什么是一直移动所以他们以间隔为中心"标记"或边界,然后在该比例上舍入到最接近的整数,然后再扩展回原始比例。