Stata 日期时间数据的转换
设法回答了这个问题,但不是通过使用“帮助日期时间”(已经这样做了)或通过阅读N.Cox的“讲状态:关于数字和字符串”。 解决方案:Stata 日期时间数据的转换,stata,Stata,设法回答了这个问题,但不是通过使用“帮助日期时间”(已经这样做了)或通过阅读N.Cox的“讲状态:关于数字和字符串”。 解决方案: gen dob_ymd_nn = date(dob_ymd,"DMYhm") format dob_ymd_nn %td 多谢各位 我的Stata变量dob_dmy显示参与者的出生日期。数据库已添加时间(全部读取时间为00:00)。它当前是一个字符串变量(str16)。当我排序时,它不是按日期排序,而是按第一天排序。见下文 63. | 01/01/1975 00:
gen dob_ymd_nn = date(dob_ymd,"DMYhm")
format dob_ymd_nn %td
多谢各位
我的Stata变量dob_dmy
显示参与者的出生日期。数据库已添加时间(全部读取时间为00:00)。它当前是一个字符串变量(str16)
。当我排序时,它不是按日期排序,而是按第一天排序。见下文
63. | 01/01/1975 00:00 |
64. | 01/01/1985 00:00 |
65. | 01/02/2010 00:00 |
我想删除时间并更改允许我按实际日期排序的格式。如果您将日期存储为MM/DD/YYYY格式的字符串,您将无法按月份、日期和年份进行排序(这不是很有帮助)。您需要将它们转换为日期,然后对它们进行排序 从以下链接:
gen date_obs = clock(datetime_obs, "MD20Yhm") //Obvously you have 4 digit years, so would change this to "MDYhm"
format date_obs %tc
@Stan指出了主要思想,即必须将字符串转换为数字日期变量@Roberto Ferrer强调,所有这些都在Stata内部显著记录。不需要互联网搜索 将您的数据用作沙箱(您可以在将来的问题中使用
dataex
(SSC)轻松创建这样的沙箱),并在变量名中暗示日期运行日、月、年,然后我们可以使用substr()
忽略一天中无用的时间,并将有用的内容传递给daily()
。为可读性添加日期格式
,然后根据需要进行排序
. clear
. input str16 sdate
sdate
1. "01/02/2010 00:00"
2. "01/01/1985 00:00"
3. "01/01/1975 00:00"
4. end
. gen ddate = daily(substr(sdate, 1, 10), "DMY")
. format ddate %td
. sort ddate
. list
+------------------------------+
| sdate ddate |
|------------------------------|
1. | 01/01/1975 00:00 01jan1975 |
2. | 01/01/1985 00:00 01jan1985 |
3. | 01/02/2010 00:00 01feb2010 |
+------------------------------+
我建议您至少阅读
help datetime
,如果您在代码方面遇到问题,请发回。原始标题“彻底查看了本网站、Stata网站、大学网站。找到了很多与我的查询无关或不起作用的内容”,对于任何人指出您的确切问题都是无用的。请选择信息性标题。您提到的解决方案记录在您提到的帮助中。您引用的2002年文章并不打算系统地讨论日期,在任何情况下都不可能讨论日期时间的处理,这是在2007年引入Stata的。不幸的是,必须指定一个双精度,以精确保存日期时间。请参见帮助日期
。