本文作者:王 涛(石河子大学)
文字编辑:李钊颖
技术总编:李朋冲
重大通知!!!2019年7月5日至7月8日在武汉举行的首期Python编程技术定制培训,招生工作已经圆满结束。另外爬虫俱乐部将于2019年8月22日至28日在湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训,仍在火热招生中。
详细培训大纲及报名方式,请点击文末阅读原文呦~
日期的提取在数据处理中不可或缺,常见的类型是字符型时间变量的提取,例如,利用date()函数、substr()函数、todatetime命令,然而对于数值型变量日期的提取却鲜有介绍。
本文首先介绍对于字符型日期提取的方法,然后利用爬虫俱乐部线下培训过程中遇到的答疑问题,详细介绍数值型变量日期的提取。
一、字符型变量日期提取
首先,我们利用input命令输入两个日期,例如6/17/2019和6/09/2019,程序如下:
clear
input str15 date
'6/17/2019'
'6/09/2019'
end
browse
然后,为将字符型日期转为数值型,我们可以利用date()函数加format命令,程序如下:
gen d = date(date,'MDY')
format d %tdCY-N-D
browse
当然你也可以选择日期显示格式,例如我们输入如下程序将会显示不同的日期格式:
gen d1 = date(date,'MDY')
gen d2= date(date,'MDY')
gen d3 = date(date,'MDY')
gen d4 = date(date,'MDY')
format d1 %tdCY.N.D
format d2 %tdCY/N/D
format d3 %tdCY-M-D
format d4 %tdCY_M_D //'_'表示空格
browse
最后我们利用year()、month()函数和substr()函数提取年份和月份,程序如下:
gen year = year(d)
gen month = month(d)
gen year1 = real(substr(date,6,4))
gen month1 = real(substr(date,1,1))
browse
除了一般常见的年月日日期数据,还有一些带时分秒的日期类型,例如2019-06-17 14:04:31.890。对于这样日期,我们依然可以利用date()函数,处理方式和上面类似,程序如下:
clear
input str29 time
'2019-06-17 14:04:31.890'
end
gen date = date(time,'YMDhms')
format date %tdCY-N-D
browse
此外,我们还可以利用clock()函数和dofc()函数,clock()函数表示此日期与1960年1月1日00:00:000相距的毫秒数;dofc()函数是将毫秒数转化为天数。程序如下:
gen date1=dofc(clock(time,'YMDhms'))
format date1 %tdCY-N-D
browse
上图中date和date1日期一样,可见两种方式均可。接着我们依然按照上面的方式提取年份和月份,程序如下:
gen year=real(substr(time,1,4)) //字符型的直接提取
gen year1=year(date) //数值型日期提取
gen month = real(substr(time,6,2))
gen month1 = month(date)
爬虫俱乐部将于2019年8月22日至28日在湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。
初级班主要是为了让学员掌握Stata数据分析技巧,并能独立撰写相关的程序。涉及内容包括多种数据格式的读取和输出、数据的合并、实证结果的输出以及爬虫俱乐部编写的命令介绍等。
高级班主要是为了让学员掌握Stata软件进阶操作,涉及内容包括正则表达式、网络爬虫技巧、文本分析等技术。经过团队精心策划,此次课程新增北大法宝裁判文书信息提取和百度地图api调用两大案例,以及新兴实证研究方法介绍,相信定能让学员受益匪浅!
联系客服