我目前有格式为 YYYY.QX 的经济数据,其中 Q 表示“季度”,后跟 X,位于 [1,4] 中。这被解释为一个字符串。
我尝试使用 date(series, "YMD") 和格式化命令,以及编码功能。
理想情况下,我最终会得到一个数值变量,指示如下:
- YYYY.X
- YYYY.M,其中“M”是该季度的第一个月
- YYYYMM01,其中“MM”是该季度的第一个月。
最好准确显示您尝试了哪些代码以及 Stata 做了什么或说了什么。
这样的日期是季度日期,因此将它们视为其他任何东西充其量是间接的,最坏的情况是完全错误的。
. set obs 1
obs was 0, now 1
. gen example = "2013.Q4"
. gen qdate = yq(real(substr(example, 1,4)),real(substr(example, -1,1)))
. list
+-----------------+
| example qdate |
|-----------------|
1. | 2013.Q4 215 |
+-----------------+
. format qdate %tq
. list
+------------------+
| example qdate |
|------------------|
1. | 2013.Q4 2013q4 |
+------------------+
请注意,您指示日期是每日日期的代码只能是错误的。此外,encode
除非您将每个字符串日期明确指定为值标签,否则(顺便说一句,不是函数,而是命令)在这里也无济于事。
更新请注意,该函数date()
不是用于创建任何类型日期的通用函数:它仅适用于每日日期。实际上有一个同义词daily()
。
这个例子表明使用quarterly()
是另一种可能性。
. di quarterly(substr("2013.Q4", 1,4) + " " + substr("2013.Q4", -1,1), "Yq")
215
对于series
包含此类字符串日期的变量,您可以去
. gen qdate = quarterly(substr(series, 1, 4)) + " " + substr(series, -1, 1), "Yq")
. format qdate %tq