有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~
前几天,我们有粉丝反映不知道如何提取日期格式为%tm的日期中的年月,今天我们就来分享几种关于提取日期格式为%tm的日期中年份和月份的方法。
首先,我们要知道什么样的日期格式是%tm这种格式,形如1959m12、1960m1、1960m2这种日期格式就是我们通常所说的%tm的日期格式,这里的m表示months。类似的,我们发现还有%tw,%td,%tq等 其他的一些日期格式,w表示weeks,d表示days,q表示quarters。这里值得我们注意的是,stata将1959m12的value在 monthly()函数中定义为-1,将1960m1的value在monthly()函数中定义为0,1960m2的value在monthly()函 数中定义为1,这对于我们后面处理数据是至关重要的。
现在,我们举个例子说明一下如何从日期格式为%tm的日期数据中提取年月。
首先,输入数据到stata中:
clear
input str7 mydate
1960m1
1980m2
2005m3
2010m10
2015m11
2017m10
end
*
方法一
第一种方法是使用字符串函数来提取我们所需要的信息。这里要注意mydate的数据类型是字符型的,因此可以使用字符串函数,如果mydate不是字符型数据是不能使用字符串函数提取的。
我们输入以下命令:
gen year1 = substr(mydate,1,4)
gen month1 = substr(mydate,6,2)
函数”substr(s,n1,n2)”表示从字符串s的第n1个字节开始截取长度为n2的子字符串。
我们来看一下输出结果:
我们可以发现,输出的年月都是字符型数据,如果我们需要的数据是数值型数据,我们就使用下面这个命令:
destring,replace
结果如下:
那么,如果该日期数据的类型本身是数值型或者说我们需要将它变成数值型数据,我们应该如何处理呢?运行下面的程序:
genmydate1 = monthly(mydate,"YM")
对于日期格式为%tm的日期,我们使用函数monthly()将日期换算成从1960年1月到该时间点已经经历了多少个月份。”YM”告诉stata原始数据的格式是“年-月”。
*
方法二
接下来,我们用第二种方法来提取其中的年月,运行下面的程序:
gen date = dofm(mydate1)
gen year2 = year(date)
gen month2 = month(date)
函数dofm()将mydate1换算出的从1960年1月开始到该时间点的月份数转换成从1960年1月1日到该时间点的天数,这时大家会有疑问,我们给出的日期仅精确到月份,stata是如何将其转换成确定的天数呢?这里我们要强调一下,stata将这里的日期天数默认为当月的第一天,因此我们可以实现这样的转换。这个时候我们就可以直接使用stata中现有的函数year()提取date中的年份,函数month()提取date中的月份,结果如下:
*
方法三
第三种方法就是当我们不知道或者忘记了函数dofm()时,可以直接使用最简单、最原始的数学方法计算出年份和月份。输入下面命令:
gen year3 = int(mydate1/12+1960)
gen month3 = mod(mydate1,12)+1
“mydate1/12”表示从1960年到现在已经经历多少年,int()为取整函数,因此可以通过数学计算的方法得出年份;mod()表示取余数,由于1960年1月的value为0,因此,我们在取余数时需要“+1”以得出正确的月份。
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:王凯丽
技术总编:刘贝贝
往期推文推荐:
5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件
6.putdocx+wordconvert—将实证结果输出到Word(.docx)文档
7.Stata 15之Markdown——没有做不到,只有想不到!
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
欢迎关注爬虫俱乐部
微信扫一扫
关注该公众号