如何在Stata中将导入的日期变量转换为原始格式?

时间:2016-08-25 01:59:15

标签: stata

我原来的日期变量就像这个19jun2015 16:52:04。导入后,它看起来像这样:1.77065e+12

新导入变量的存储类型为str11,显示格式为%11s

我想知道如何将其恢复为日期格式?

1 个答案:

答案 0 :(得分:1)

William Lisowski在评论中提出了很好的建议。对于在Stata中使用日期时间的任何人来说,只有最低限度的理解,没有这种理解,混淆和彻底的错误是不可避免的。只研究help以便了解您的特定需求可以解决您的困难。

问题中缺少细节,这使得精确的建议变得困难(导入 - 从哪种文件?使用哪些命令和/或第三方程序?),除了诊断你的日期搞砸了,可以只能通过返回原始来源进行纠正。

"19jun2015 16:52:04"之类的日期字符串可以作为字符串保存在Stata中,但为了有用,它们需要转换为double数字变量,这些变量保存自1960年初以来的毫秒数。这是人们无法解释的数字,但Stata提供显示格式,以便显示日期可理解。

你的例子是转换为万亿的数量但如果只保留为只有6个有效数字的字符串,至少会丢失无可挽回的细节。

这些个别例子使我的观点具体化。 didisplay命令的缩写。

clock()(以及Clock(),此处未显示或讨论:请参阅help)将字符串日期转换为自Stata原点以来的毫秒数。使用变量,您可以使用generate double

. di %23.0f  clock("19jun2015 16:52:04", "DMY hms")
          1750351924000

如果以特定格式显示,您可以检查Stata是否正确解释了您的日期时间。默认%tc格式还有许多小变体,用于控制日期时间元素的精确显示。

. di %tc  clock("19jun2015 16:52:04", "DMY hms")
19jun2015 16:52:04

第一个例子表明,即使是最近日期(〜2016年)和整数秒内的日期时间也需要10个有效数字才能准确;默认显示给出4;不知怎的,你有6个,但这还不够。

. di  clock("19jun2015 16:52:04", "DMY hms")
1.750e+12

您需要再次导入日期。如果您完全按照所示导入它们,其余的可以在Stata中完成。

如果该短语不熟悉,请参阅https://en.wikipedia.org/wiki/Significant_figures