使用顶级

时间:2016-05-24 17:09:41

标签: stata

我理解将字符串01-12-06和01-12-96翻译为Stata中的日期,您必须:

  • 在掩码中指定假定的前缀," DM20Y"和
  • 添加一个可选参数topyear:clock(string,mask,topyear)

因此,generate double timestamp = clock(timestr, "DMY", 2020)使得两位数的06年解释为2006年,因为2006年不超过2020年。两位数的96年将被解释为1996年,因为2096年确实超过2020年。

但是,我在实现这个方面遇到了麻烦。所以,我决定:

g date = date(strdate, "MD20Y")
format date %td

然后我想基本上用前缀" 19"替换大于2040的日期。 (所以2097年变成1997年;但2006年仍然是2006年)。

有人可以告诉我如何编写条件声明吗?我一直都有错误。

或者,相反,我如何正确使用topyear功能?

1 个答案:

答案 0 :(得分:2)

函数date()根据字符串参数生成数字日期日期,给出解释它们的规则。它的历史可以追溯到[双关语]最早在1995年Stata 4中引入日期函数,当时每日日期是唯一受到特别支持的日期,日历年被认为是不言自明的。现在同义词daily()可用,我建议可以而且应该使用它,无论您的读者对Stata arcana的了解程度如何。否则,正如经常发生的那样,人们可能会开始猜测date()是一个通用函数,根据用户的意愿产生其他类型的日期,这与该点上的所有文档相反。

就您的问题而言,我认为您需要进一步了解的是daily()date()支持topyear规范。示例:

. di  %td daily("24 May 96", "DMY", 2050)
24may1996

. di %td daily("24 May 06", "DMY", 2050)
24may2006

Meta-tip:我总是用display测试日期问题和具体的例子(我认为)我知道答案应该是什么。

Stata或here

中来自help daily()的文档