Stata月度功能

时间:2014-08-25 22:05:42

标签: stata

我正在尝试使用Stata中的monthly()函数将一组月 - 月对从字符串转换为数字。此变量的数据如下所示:

rcsbirth
072005
101993
012001
121994

我可以使用date()函数执行此操作,如下所示:

gen childbirth = date(rcsbirth,"MY")

然后我用

 format childbirth %td

 childbirth 

现在列为

 01jul2005
 01oct1993
 01jan2001
 01dec1994

各自的rcsbirth日期。

当我尝试使用monthly()函数应用此相同的过程,并使用%tm而不是date()格式化%td时,会生成所有缺失值新的分娩变量。

同样,我正在尝试申请:

gen childbirth = monthly(rcsbirth, "MY")

2 个答案:

答案 0 :(得分:2)

我确认了这个问题并且无法解释。

以下两种方法可以从示例数据中获取一行中的每月日期。

input str6 rcsbirth
"072005"
"101993"
"012001"
"121994"
end 

gen childbirth = ym(real(substr(rcsbirth,-4,4)), real(substr(rcsbirth, 1, 2)))
gen childbirth2 = mofd(date(rcsbirth, "MY"))
format childbirth* %tm

l
       +--------------------------------+
       | rcsbirth   childb~h   childb~2 |
       |--------------------------------|
    1. |   072005     2005m7     2005m7 |
    2. |   101993    1993m10    1993m10 |
    3. |   012001     2001m1     2001m1 |
    4. |   121994    1994m12    1994m12 |
       +--------------------------------+

答案 1 :(得分:1)

日期时间翻译帮助文件(help datetime_translation)指出:

  

“ ... monthly()转换年份和月份数字(1-12)...”

因此,以下内容有效:

generate wanted = monthly(substr(rcsbirth, 1, 2) + " " + substr(rcsbirth, 3, .), "MY")                                                                                      
format wanted %tm

list

     +--------------------+
     | rcsbirth    wanted |
     |--------------------|
  1. |   072005    2005m7 |
  2. |   101993   1993m10 |
  3. |   012001    2001m1 |
  4. |   121994   1994m12 |
     +--------------------+

换句话说,月份必须由年份-/隔开。