我有如下的stata程序
* 产生mw_frst90_y_ky在各个区间上的值
gen mw_frst90_y_ky_1 = 3.35
gen mw_frst90_y_ky_2 = 3.61
gen mw_frst90_y_ky_3 = 9999
* 产生mw_frst90_y_ky的各个区间点
gen mw_frst90_y_ky_year_begin_1 = 1990
gen mw_frst90_y_ky_year_end_1 = 1991
gen mw_frst90_y_ky_year_begin_2 = 1991
gen mw_frst90_y_ky_year_end_2 = 1993
gen mw_frst90_y_ky_year_begin_3 = 1993
gen mw_frst90_y_ky_year_end_3 = 2010
gen mw_frst90_y_ky_month_begin_1 = 7
gen mw_frst90_y_ky_month_end_1 = 6
gen mw_frst90_y_ky_month_begin_2 = 7
gen mw_frst90_y_ky_month_end_2 = 3
gen mw_frst90_y_ky_month_begin_3 = 4
gen mw_frst90_y_ky_month_end_3 = 12
* 赋值过程
forvalues k = 1(1)3 {
local j = `k' + 1
gen
if mw_frst90_y_ky_month_begin_`k' < mw_frst90_y_ky_month_begin_`k' {
replace mw_frst90_y = mw_frst90_y_ky_`k' if ((year >= mw_frst90_y_ky_year_begin_`k') & (month >= mw_frst90_y_ky_month_begin_`k')) & ((year <= mw_frst90_y_ky_year_end_`k') & (month <= mw_frst90_y_ky_month_end_`k')) & (st_id == 27)
}
if mw_frst90_y_ky_month_begin_`k'> mw_frst90_y_ky_month_begin_`k' {
replace mw_frst90_y = mw_frst90_y_ky_`k' if ((year >= mw_frst90_y_ky_year_begin_`k') & (month >= mw_frst90_y_ky_month_begin_`k')) & ((year <= mw_frst90_y_ky_year_begin_`k') & (month <= 12)) & (st_id == 27)
replace mw_frst90_y = mw_frst90_y_ky_`k' if ((year >= mw_frst90_y_ky_year_end_`k') & (month >= 1) & ((year <=
mw_frst90_y_ky_year_end_`k') & (month <= mw_frst90_y_ky_month_end_`k')) & (st_id == 27)
replace mw_frst90_y = mw_frst90_y_ky_`k' if ((year >= mw_frst90_y_ky_year_begin_`j') & (month >= 1)) & ((year <=
mw_frst90_y_ky_year_end_`') & (month <= 12))
}
现在主要的问题是最后一个语句, 我想把mw_frst90_y_ky_year_end_`k' 那个变量的值,比如说1991提取出来,然后将这个值减去1,这样把1990年7月到1991年6月这个时间段分成三段处理: 1990年7月到12月,1991年1月到6月,还有1991年1月到1990年12月(其实这个时间段为空,但是为了一般意义的作用,因为时间段可能超过1年),问题是这个是不是要将gen 产生的变量的形式转化成为可计算的形式呢?就是这个1991年1月到1990年12月这个如何在if语句中用一般的形式表达出来呢?这个程序应该如何修改让其能达到我的目的啊?希望高手们多多帮助,谢谢