下面的代码将数字月观察值转换为日期格式,
input month
1
2
3
4
5
6
7
8
9
10
11
12
end
clonevar monthname = month
format monthname %tmMonth
然而,Stata 看到的不是 1 = January,而是 1 = February,2 = March 等等
month monthname
1 February
2 March
3 April
如何解决?
没有别的说,你的语法暗示你的变量
month
(及其任何克隆)是Stata每月日期变量,因此遵循Stata规则,即每月日期相对于1960年1月的原点0计算。因此1是二月[1960年也],依此类推。您的特定显示格式会抑制年份的显示,但作为 Stata 理解的一部分,它仍然存在——给定您的 format
命令。
最重要的是,分配特定的显示格式不会将变量从一种日期转换为另一种。有关更多信息,请参阅https://www.stata-journal.com/article.html?article=dm0067。
如果你想要别的东西,你需要一些不同的语法。例如,如果您的值是一年中的月份,而年份是其他月份,那么您可能需要使用月份和年份的组合来创建每月日期。
按照@NickCox的解释,解决方法是更换线
clonevar monthname = month
与
gen monthname = month-1
这将符合 Stata 对每月日期变量的理解(0 是一月)