代码之家  ›  专栏  ›  技术社区  ›  Amin Karimi

如何使用Stata限制时间?

  •  1
  • Amin Karimi  · 技术社区  · 6 年前

    我想限制 TRD_EVENT_TM 我的数据集的变量,即时间值,介于9:30到11:00之间。

    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str8 TRD_EVENT_TM str6 TRD_STCK_CD double TRD_PR long TRD_EVENT_DT
    "09:53:17" "BANK1"   909 18293
    "10:25:40" "HSHM1"  1706 19205
    "11:32:03" "SIPA1"  2231 18866
    "11:01:55" "AZAB1"  2283 18916
    "12:19:56" "SIPA1"  2063 17683
    "10:48:01" "CHML1"  6048 18672
    "10:59:49" "DADE1"  3044 18847
    "11:40:34" "CHML1"  6406 18798
    "10:54:45" "GOLG1"  7583 18544
    "11:08:01" "IKCO1"  3942 18743
    "10:25:35" "ASIA1"  5248 18511
    "09:41:46" "FOLD1"  4910 19406
    "11:43:15" "BANK1"   829 18105
    end
    format %tdD_m_Y TRD_EVENT_DT
    

    我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nick Cox    6 年前

    虽然它是一个字符串变量,但条件 inrange(TRD_EVENT, "09:30", "11:00") 应该很好。使用您的数据,

    . list TRD_EVENT_TM if inrange(TRD_EVENT_TM, "09:30", "11:00") , sep(0) 
    
         +----------+
         | TRD_EV~M |
         |----------|
      1. | 09:53:17 |
      2. | 10:25:40 |
      6. | 10:48:01 |
      7. | 10:59:49 |
      9. | 10:54:45 |
     11. | 10:25:35 |
     12. | 09:41:46 |
         +----------+
    

    help inrange() 说明函数允许字符串参数的文档。另请参见 https://www.stata-journal.com/sjpdf.html?articlenum=dm0026

        2
  •  1
  •   user8682794 user8682794    6 年前

    另一种方法是使用内置 clock() 功能:

    list TRD_EVENT_TM if clock(TRD_EVENT_TM, "hms") >= clock("9:30", "hm") & ///
    clock(TRD_EVENT_TM, "hms") <= clock("11:00", "hm")
    
        +----------+
        | TRD_EV~M |
        |----------|
     1. | 09:53:17 |
     2. | 10:25:40 |
     6. | 10:48:01 |
     7. | 10:59:49 |
     9. | 10:54:45 |
        |----------|
    11. | 10:25:35 |
    12. | 09:41:46 |
        +----------+
    

    因此,如果要限制变量,只需创建一个包含相关观察值的新变量:

    generate NEW_TRD_EVENT_TM = TRD_EVENT_TM if ///
    clock(TRD_EVENT_TM, "hms") >= clock("9:30", "hm") & ///
    clock(TRD_EVENT_TM, "hms") <= clock("11:00", "hm")