如何在 Stata 中格式化变量?

How to format a variable in Stata?

我正在尝试获取格式化的当前数据并使用以下命令从中创建一个变量:

gen %tdCY-N-D final_dayinpt = date(c(current_date), "DMY")

但是,我遇到了一个错误

%tdCY invalid name
r(198);

如果我在 Stata 命令行中显示它,它会起作用:

. display  %tdCY-N-D date(c(current_date), "DMY")
2020-10-27

如何创建这个格式化变量?

解决方案:

set obs 10 // so the example works
generate final_dayinpt = date(c(current_date), "DMY")
format final_dayinpt %tdCY-N-D

您正在尝试的语法很诱人,因为您用于 display 的格式 似乎 类似于 generate byte bytevar = 1,但是,正如您发现类比在这里不成立。

请注意,根据 generate 语法 (help generate):

,您传递的格式信息应为 type
generate [type] newvar[:lblname] =exp [if] [in] [, before(varname) | after(varname)]

虽然咨询 help generatehelp display 很有帮助,但 help datetime 在这里也很有用(对我来说从来都不明显)。

See here for a more thorough treatment of working with dates in Stata.

编辑:

Nick Cox 建议(并使之成为可能)的替代方案:

ssc install numdate // install the package which Nick wrote
generate current_date = c(current_date) // numdate takes a varlist
numdate daily final_dayinpt = current_date, pattern(DMY) format(%tdCY-N-D)