楼主: xmwise
8347 4

[其他] Stata对月度数据的处理方法 [推广有奖]

  • 0关注
  • 1粉丝

已卖:4份资源

讲师

93%

还不是VIP/贵宾

-

威望
0
论坛币
34600 个
通用积分
7.6571
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5463 点
帖子
135
精华
0
在线时间
956 小时
注册时间
2014-9-12
最后登录
2023-11-30

楼主
xmwise 发表于 2017-5-6 00:43:13 |AI写论文
10论坛币
我这边有月度的时间数据(如图所示):

yrmon为2003m1,表示2003年1月。

请问Stata中有什么命令能提取这个变量中的年份和月份?
比如yrmon=2003m1对应的年份2003和月份1,也就是说我希望能生成两个新变量year和month,它们的值分别为2003和1.

我试过year()命令和month()命令,但无法正确提取出年份和月份。

希望网友们能提供帮助。
附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

逍遥梦蝶 查看完整内容

Sorry, 我也误解了year()和month()函数的用法。 year()和month()函数的填项必须是日期。你的例子里如果直接使用year(yrmon),Stata默认其取值还是日期,也就是离1960年1月1日的天数,所以会得到提取的年度为1961。 正确的解决方法是利用dofm()函数,例如:更简洁的代码,例如: gen year = year(dofm(yrmon)) gen month = month(dofm(yrmon))
关键词:Stata 月度数据 处理方法 tata month

沙发
逍遥梦蝶 发表于 2017-5-6 00:43:14
xmwise 发表于 2017-5-6 09:50
不好意思,year()和month()命令并不能正确提取年份和月份,我的运算结果如图:
很明显,2003年对应的 ...
Sorry, 我也误解了year()和month()函数的用法。

year()和month()函数的填项必须是日期。你的例子里如果直接使用year(yrmon),Stata默认其取值还是日期,也就是离1960年1月1日的天数,所以会得到提取的年度为1961。

正确的解决方法是利用dofm()函数,例如:
  1. gen tempdate = dofm(yrmon)
  2. * 生成一个新变量tempdate,取值为yrmon所在年月的第一天

  3. gen year = year(tempdate)
  4. gen month = month(tempdate)
  5. * 提取年份和月份
复制代码
更简洁的代码,例如:
gen year = year(dofm(yrmon))
gen month = month(dofm(yrmon))
已有 1 人评分论坛币 收起 理由
giresse + 30 精彩帖子

总评分: 论坛币 + 30   查看全部评分

藤椅
逍遥梦蝶 发表于 2017-5-6 03:29:39
根据图片显示的情况,yrmon变量应该已经保存称为Stata识别的月份变量,直接使用year()和month()函数是可行的。例如:
  1. gen year = year(yrmon) // 生成一个名为year的新变量存储年份
  2. gen month = month(yrmon) // 生成一个名为month的新变量存储月度
复制代码
希望能解决。

板凳
xmwise 发表于 2017-5-6 09:50:37
逍遥梦蝶 发表于 2017-5-6 03:29
根据图片显示的情况,yrmon变量应该已经保存称为Stata识别的月份变量,直接使用year()和month()函数是可 ...
不好意思,year()和month()命令并不能正确提取年份和月份,我的运算结果如图:
很明显,2003年对应的年份为2003,不是1961,月份也不是5月和六月。

请问还有其他的解决方法吗?
附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

报纸
xmwise 发表于 2017-5-6 23:48:03
逍遥梦蝶 发表于 2017-5-6 00:43
Sorry, 我也误解了year()和month()函数的用法。

year()和month()函数的填项必须是日期。你的例子里如果 ...
我试了这两个命令,确实可以生成正确的年份和月份变量,问题由此解决。

非常感谢您的帮助。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-1 07:08