【问题标题】:Is there a Stata function to delete the date in a DateTime variable?是否有一个 Stata 函数可以删除 DateTime 变量中的日期?
【发布时间】:2020-07-04 16:00:11
【问题描述】:

我有一个名为assign1_submission 的日期时间变量(类型doubleformat %tchh:MM:SS_AM)。我还有另一个日期时间变量time_due(输入doubleformat %tchh:MM:SS_AM)。

gen double time_due = clock("12:00 PM", "hm")
format time_due %tchh:MM:SS_AM

在我从 MS Excel 导入的 assign1_submission 中,变量只包含一个时间。但是,在数据浏览器中,Stata 为条目附加了一个日期。

尽管只告诉 Stata 一个时间,但我的 time_due 变量在条目中有一个日期。

我想要做的是删除两个变量中的日期,因为我想查看time_dueassign1_submission 之间的时间差。 所以,我尝试了以下代码:

replace assign1_submission = hh(assign1_submission)
replace time_due = hh(time_due)

gen time_difference = time_due - assign1_submission

根据Stata:

hh(e_tc) 说明:datetime e_tc 对应的小时(ms. since 01jan1960 00:00:00.000)

运行此代码时:

replace assign1_submission = hh(assign1_submission)

Stata 忽略之前的时间:所有内容都被覆盖为状态:12:00 AM,其中日期仍附加到条目。

有人可以帮忙删除assign1_submissiontime_due 变量中的日期,以便我可以确定两个变量之间的小时差吗?

【问题讨论】:

    标签: datetime stata


    【解决方案1】:

    自 1960 年初以来,Stata 中的日期时间以毫秒 (ms) 为单位计算。您可以通过将余数除以 24 * 60 * 60000(即 1 天的毫秒数)来丢弃日期元素。

    相关时间仍默认为 1960 年 1 月 1 日。

    clear 
    set obs 1 
    gen double datetime = clock("4 July 2020 18:00:00", "DMY hms")
    format datetime %tc 
    gen double time = mod(datetime, 24 * 60 * 60 * 1000)
    format time %tcHH:MM:SS
    l, noobs 
    
      +-------------------------------+
      |           datetime       time |
      |-------------------------------|
      | 04jul2020 18:00:00   18:00:00 |
      +-------------------------------+
    

    否则很难遵循您的断言。 Stata 不会因为您在浏览器中查看而更改数据。您显示为每日日期的内容与不同的变量有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 2023-01-01
      • 2020-06-03
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多