麻烦四舍五入

时间:2017-12-02 23:14:46

标签: stata

我试图在Stata中间隔最近的15分钟间隔,因此例如2017年12月31日23:58将成为2018年1月1日00:00。我有时间(根据我对文档的理解)存储自1960年开始以来的毫秒数。所以我认为这样做:

gen round = round(datetime,60000 * 15)

然而,这并不是很有效。例如2017年11月3日19:45:27成为2017年11月3日19:46:01,当我认为我应该成为19:45:00。有谁知道我在这里失踪了什么?

1 个答案:

答案 0 :(得分:1)

让我们展示一个说明我的评论的实际示例,您需要将datetime值存储为double而不是float

. clear

. set obs 1
number of observations (_N) was 0, now 1

. gen double datetime = clock("Nov 03, 2017 19:45:27","MDYhms")

. gen round_f = round(datetime, 60000*15)

. gen double round_d = round(datetime, 60000*15)

. format datetime round_f round_d %tc

. list, clean noobs

              datetime              round_f              round_d  
    03nov2017 19:45:27   03nov2017 19:46:01   03nov2017 19:45:00