簡體   English   中英

如何使用Stata限制時間?

[英]How to bound time using Stata?

我想限制數據集的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

我怎樣才能做到這一點?

雖然它是一個字符串變量,但條件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

另一種方法是使用內置的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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM