Date 将日期从%tm准确转换为stata中的日期
在附加了几个数据集之后,我有了Date 将日期从%tm准确转换为stata中的日期,date,stata,Date,Stata,在附加了几个数据集之后,我有了%tm格式的日期,即YYYYMM。我想将它们转换成一种形式,在这种形式中,我可以将月份和年份分开,以便按季度生成数据。然而,当我尝试将它们更改为其他日期格式时,所有年份都显示为1961年。尝试使用格式%tq时给出了不正确的数据,以及年(日期)和月(日期)函数。当我将它们转换为字符串时,它们显示为从300到20000的数字,但当使用格式%tm时,这些奇怪的数字会转换回显示正确的年份和月份。你知道发生了什么,我如何解决这个问题吗 您在这里提到了几个相关问题,但没有给出示
%tm
格式的日期,即YYYYMM。我想将它们转换成一种形式,在这种形式中,我可以将月份和年份分开,以便按季度生成数据。然而,当我尝试将它们更改为其他日期格式时,所有年份都显示为1961年。尝试使用格式%tq
时给出了不正确的数据,以及年(日期)
和月(日期)
函数。当我将它们转换为字符串时,它们显示为从300到20000的数字,但当使用格式%tm
时,这些奇怪的数字会转换回显示正确的年份和月份。你知道发生了什么,我如何解决这个问题吗 您在这里提到了几个相关问题,但没有给出示例来显示您使用的确切代码或实际数据。严格地说,这会使你的问题偏离主题,因为在你的问题中没有什么能像一个可复制的例子。不过,一些诊断是可能的
这里的关键谬误是
- 指定特定日期显示格式可定义Stata日期
- 因此,更改显示格式会更改Stata日期类型
%td
,%tm
,%tq
,则会显示不同的日期,但最多只能显示一个正确的日期,因为除了显示格式外,我什么也没做任何更改:
. di %td 42
12feb1960
. di %tm 42
1963m7
. di %tq 42
1970q3
因此,在不更改值的情况下更改显示格式通常只是胡说八道
最重要的是,如果您有每月的日期,year()
和month()
如果没有额外的函数就无能为力,因为它们从每天的日期中提取年份和月份
这很棘手,但在帮助日期和时间
中都有很好的文档记录,只是比大多数人想读的更详细,因为你必须浏览和跳过任何不适合你当前需要的内容
据我所知,简而言之,您的问题是将每月日期转换为季度日期,因此您不需要像您所设想的那样提取月份和年份,尽管这是一种方法
我会调用dofm()
,然后调用qofd()
这些功能的作用是更改(most)值,然后可以指定适当的显示格式
正如您应该看到的,这里的战略建议是使用display
手动尝试解决方案
如果这偏离了目标,您可能需要提供真实的数据和代码详细信息,而不仅仅是在不完整的描述中提及您使用的内容
注意。对于大多数Stata用户来说,20000不是一个合理的每月日期,因为在未来的1600多年中:
. di %tm 20000
3626m9
有关未来问题的指导,请参阅和。
. di %tm 20000
3626m9