【STATA】时间变量处理,字符串转为日期时间

STATA、EXCEL、PYTHON处理时间变量使之能够加减计算的方法是:以某一个时间线为基准(如STATA以1960年1月1日为基准),计算指定时间与基准时间的“相隔天数/月数/季度数/年数”,通过“相隔”数来进行加减计算。

大部分被导入STATA的时间变量不会被自动识别为时间变量(这句话可能是我乐观了),需要进行字符串到“相隔”数值的转换。

但是因为“相隔”数对使用者来说本身是没有意义的,所以还需要format 进行一下格式上的转化,简单来讲就是披上一层可以让我们认识的人皮。

图1:常见的时间数据导入格式

常见字符串导入的格式
第一步:将字符串转为与基准时间的间隔数

gen clock=clock(date1,"YMDhms")
gen date=date(date2,"YMD")

date1的数据构成是年月日时分秒,所以选用clock()函数,得出的结果是指定时间与1960年1月1日 0时0分0秒的间隔秒数,因为是以秒计次,所以间隔数字非常大。

date2的数据构成是年月日,所以选用date()函数。得出的结果是指定时间与1960年1月1日的间隔天数。

图2:转换后的时间间隔

在这里插入图片描述
第二步:将间隔数值转化为易读格式

format clock %tc
format date %td
图3:披上人皮后的时间间隔

在这里插入图片描述
此时时间值已经从date1、date2的字符串变成了可以进行加减运算的浮点数。可是用来筛选时间,计算时间差等。

常用转换函数包括:

函数转化类型常用format转化格式
clock(var,“YMDhms”)年月日时分秒%tc
weekly(var,“YW”)年周(eg.2021W23)%tw
date(var,“YMD”)年月日%td
monthly(var,“YM”)年月%tm
quartly(var,“YQ”)年季(eg.2021Q2)%tq
halfyearly(var,H")年半年(eg.2021h1)%th
year(var,“Y”)%ty

以上函数一般规律为:时间函数(待转换变量/“值,“该变量/值的格式”[,Y])。
注意⚠️格式参数(即表格中的“YMDhms”/“YW”/"YMD"等)需要根据变量/值的格式来自由调整,如20210813 10:24:43的格式为YMDhms,而10:24:43 08/13/2021的指定格式则为hmsDMY.
Y用于处理2位数年份,如21年8月3日,一般情况下可以忽略

在确定了变量/值格式参数后,目前的时间变量函数已经可是识别大部分常用时间写法,如date(var,“YMD”)函数可以识别的字符串日期格式包括但不限于20210813、2021.08.13、2021/08/13等。

时间变量提取单独的时间元素

date1、date2转为时间变量后,需要单独提取年、月等时间元素,可以用

year();month();week();day()

图4:提取出来的时间元素

在这里插入图片描述
以上函数仅适用于date()转化出的时间变量,不适用于clock()转化的date1变量。
如果需要将clock格式转化为date格式,可以通过split()将date1字符串分为年月日与时分秒两个值后,再对年月日单独进行date()转化。

  • 20
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值