【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()转化。

评论 3 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

遍地滚豆豆

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值