全部版块 我的主页
论坛 计量经济学与统计论坛 五区 数据交流中心
6671 0
2025-08-05

下面给出 Stata 15-17 Stata 18+ 都能用的三段式代码,把 “2023-05” 这类 %tm 格式的年月变量 一键拆成 数值型 year month;同时把 “202305” 这种纯数字 也一并解决。直接复制即可跑通。





场景 1:变量已是 %tm 格式(如 2023m5

stata


* 假设变量名为 ymgen year  = year(dofm(ym))   // 2023gen month = month(dofm(ym))  // 5

dofm() 先把 %tm → %td(当月 1 号),再用 year()/month() 提取





场景 2:变量是字符串 “2023-05”

stata


* 1) 先转为 %tmgen ym_tm = monthly(string_ym, "YM")format ym_tm %tm

* 2) 再拆gen year  = year(dofm(ym_tm))gen month = month(dofm(ym_tm))





场景 3:变量是纯数字 202305

stata


* 假设数值变量为 ym_numgen year  = int(ym_num/100)        // 2023gen month = mod(ym_num,100)        // 5





一键检验

stata


list ym year month in 1/5


ym

year

month

2023m5

2023

5





懒人命令(Stata 18+

Stata 18 起可直接:

stata


split ym, parse(m) destring gen(tmp)rename tmp1 yearrename tmp2 month





一句话总结
变量是 %tm dofm();字符串先 monthly();纯数字直接 int/mod

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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