全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2307 0
2009-10-06
我有如下的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语句中用一般的形式表达出来呢?这个程序应该如何修改让其能达到我的目的啊?希望高手们多多帮助,谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群