我理解将字符串01-12-06和01-12-96翻译为Stata中的日期,您必须:
因此,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
功能?
答案 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()
的文档