【问题标题】:Convert odd Stata string variable to date将奇数Stata字符串变量转换为日期
【发布时间】:2014-05-19 01:01:23
【问题描述】:

我目前有格式为 YYYY.QX 的经济数据,其中 Q 表示“季度”,后跟 X,位于 [1,4] 中。这被解释为一个字符串。

我尝试过使用 date(series, "YMD") 和格式化命令,以及 encode 函数。

理想情况下,我最终会得到一个数值变量,表示类似:

  • YYYY.X
  • YYYY.M,其中“M”是该季度的第一个月
  • YYYYMM01,其中“MM”是该季度的第一个月。

【问题讨论】:

  • 您能告诉我们您尝试过的实际代码吗?

标签: string date variables stata economics


【解决方案1】:

最好准确显示您尝试了哪些代码以及 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 (顺便说一句不是函数,而是命令)在这里也无济于事。

UPDATE 请注意,函数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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多