如何在Stata中格式化变量?

如何在Stata中格式化变量?,stata,Stata,我试图获取格式化的当前数据,并使用以下命令从中创建变量: gen%tdCY-N-D final\u dayinpt=日期(c(当前日期),“DMY”) 然而,我得到了一个错误 %tdCY invalid name r(198); 如果我在Stata命令行中显示此选项,它将起作用: . display %tdCY-N-D date(c(current_date), "DMY") 2020-10-27 如何创建此格式化变量?解决方案: set obs 10 // so th

我试图获取格式化的当前数据,并使用以下命令从中创建变量:

gen%tdCY-N-D final\u dayinpt=日期(c(当前日期),“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
您尝试的语法很吸引人,因为您用于显示的格式似乎类似于
生成字节bytevar=1
,但是,正如您所发现的,这种类比在这里并不成立

请注意,您正在传递格式信息,其中基于
generate
语法(
help generate
)需要键入

虽然咨询
帮助生成
帮助显示
很有帮助,但是
帮助日期时间
在这里也很有用(我从来都不清楚)

编辑: 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)

这可能不是最简洁的解决方案,但是如果您在一个命令中生成日期变量,那么在下一个命令类型中
format final\u dayinpt%tdCY-N-D
,应该可以工作。另外,在
gen
之后和
newvar
之前指定格式似乎不是合法的Stata语法。请参见
帮助生成
@Cybernike是否正确。格式不能作为
generate
命令的一部分,如其帮助中的语法图所示。@Cybernike,如果有答案,我会接受!谢谢此答案综合了赛博耐克和尼克考克斯的评论。请注意,
generate
不允许单步解决方案。该帐户很有帮助,但完整故事位于-help datetime-。您可以在SSC的
numdate
命令中指定格式。由于您希望以任何方式使用非默认格式,您必须在某个地方详细说明,Arthur的方法很好。很好的观点,很好的软件包。我已经把它添加到了答案中。
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)