【问题标题】:Trouble rounding times in StataStata中的麻烦四舍五入时间
【发布时间】:2017-12-02 23:14:45
【问题描述】:

我正在尝试将时间四舍五入到 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。有人知道我在这里缺少什么吗?

【问题讨论】:

  • Stata datetime 值需要存储为double;您的生成命令应该以gen double round 开头

标签: stata


【解决方案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  

【讨论】:

  • 完美,谢谢!我之前没有关注存储类型。我永远不会想到这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 2023-01-12
  • 2012-08-04
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多