【问题标题】:Stata: how to change a string variable to a date?Stata:如何将字符串变量更改为日期?
【发布时间】:2013-08-16 02:40:18
【问题描述】:

我是 Stata 新手,我想知道如何将包含日期的字符串变量更改为日期格式。

变量中的数据如下所示:

yyyy-mm-dd

我应该先删除破折号以便 Stata 可以识别格式以便以后使用gen var = date() 吗?

感谢您的帮助。

【问题讨论】:

  • 你得到你需要的答案了吗?\
  • “格式”这个词在这里很危险。 “yyyy-mm-dd”作为保存日期的模式或样式是一种格式(意义 1)。用format 命令指定Stata 的每日日期显示格式是Stata 的词义(意义2),但还不够。日期格式(意义 3)是指以数字形式存储并相对于 1960 年 1 月 1 日计算的每日日期。

标签: string date format stata


【解决方案1】:

Stata date 函数在删除分隔符方面很聪明。请参阅“日期功能”部分下的help datetime_translation

如果您的日期是v1yyyy-mm-dd 的形式,您可以指定命令:

generate v2 = date(v1, "YMD")
format %td v2

YMD 称为掩码,它告诉Stata 指定日期部分的顺序。第二行将为变量分配 Stata 每日日期格式,这意味着当您在数据中查看该变量时,它将以人类可读的形式显示。但是,日期存储为自 1960 年 1 月 1 日以来的天数。

试验date 函数的最佳方法是使用display 命令。第一行将显示一个整数,表示自 1960 年 1 月 1 日以来的天数。第二行将以人类可读的格式显示日期。

display date("2013-08-14", "YMD")
display %td date("2013-08-14", "YMD")

【讨论】:

  • 我稍微编辑了格式的解释。人们经常将分配显示格式与更改存储内容混淆。你的措辞很好,但我已经进一步收紧了。
【解决方案2】:

您可以查看here 以了解如何在 Stata 中转换为数据或这样做

tostring datedx, replace
generate str4 dxyr1= substr(datedx,1,4)
generate str2 dxmo1 = substr(datedx,6,7)
generate str2 dxda1 = substr(datedx,9,10)
destring dx*, replace
gen datedx1 = mdy(dxmo1, dxda1, dxyr1)

【讨论】:

  • OP 以字符串变量开头,因此tostring 是多余的,但无害。使用date() 函数,正如@sechilds 的回答,更直接。
猜你喜欢
  • 2014-05-19
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
相关资源
最近更新 更多