我想在9:30到11:00之间限制数据集的TRD_EVENT_TM
变量,即时间值。
* 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
我该怎么做?
答案 0 :(得分:2)
虽然它是一个字符串变量,但条件#Name?
应该可以正常工作。使用您的数据
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 |
+----------+
证明该函数允许字符串参数。另请参阅https://www.stata-journal.com/sjpdf.html?articlenum=dm0026
答案 1 :(得分:1)
另一种方法是使用内置的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")