相关文章推荐
道上混的饭盒  ·  Get-Date ...·  2 月前    · 
冷静的热带鱼  ·  【jdk1.8】LocalDateTime ...·  2 月前    · 
睿智的砖头  ·  java日期格式化 - 不要划水 ·  2 月前    · 
另类的电脑桌  ·  HUAWEI 手提電腦 - 華為香港·  7 月前    · 
痴情的高山  ·  java jwt设置token过期 jwt ...·  2 年前    · 
冲动的啄木鸟  ·  续航与三元锂车型保持一致 零跑 T03 ...·  2 年前    · 
冷静的楼房  ·  收评:自贸区挂牌新一轮受益股揭晓 ...·  2 年前    · 
不羁的勺子  ·  MySQL必知必会使用通配符和正则表达式数据 ...·  2 年前    · 
Code  ›  Stata | 字符串转日期变量开发者社区
stata string转date date函数 date
https://cloud.tencent.com/developer/article/1798222
朝气蓬勃的包子
2 年前
作者头像
PyStaData
0 篇文章

Stata | 字符串转日期变量

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > PyStaData > Stata | 字符串转日期变量

Stata | 字符串转日期变量

作者头像
PyStaData
发布 于 2021-03-06 22:36:38
9.3K 0
发布 于 2021-03-06 22:36:38
举报

转换逻辑

Stata 将日期、时间以及日期和时间以 1960-01-01 00:00:00.000 为开始时间的整数存储。比如 1960-01-01 为 0, 1959-12-31 为 -1 , 1960-01-02 为 1 。

据此,字符串转换为日期变量的逻辑为:

  • 将待转换字符串(如 1960-01-01 )通过 日期函数 转换为 Stata 能够理解的整数并储存在新变量中;
  • 为新变量设置 显示格式 ,注意这里只是修改成便于阅读的显示格式,Stata 储存的仍是整数。
* 生成示例数据
clear
set obs 30
gen date = ""
forvalues i = 1/30{
	dis `i'
	if `i' < 10{
		replace date = "1960-01-" + "0" + "`i'" in `i'
	else{
		replace date = "1960-01-" + "`i'" in `i'
* 转换为日期格式
generate date1 = date(date, "YMD")
gen date2 = date1
format date2 %td

日期显示格式( %t formats ):

格式

基准

单位

备注

转换函数

%tc

01jan1960

milliseconds

忽略闰秒

clock(string, mask)

%tC

01jan1960

milliseconds

算闰秒

Clock(string,mask)

%td

01jan1960

days

日历日期格式

date(string,mask)

%tw

1960-w1

weeks

第 52 周可能超过 7 天

weekly(string, mask)

%tm

jan1960

months

日历月格式

monthly(string,mask)

%tq

1960-q1

quarters

财务季度

quarterly(string, mask)

%th

1960-h1

half-years

1 个半年= 2 个季度

halfyearly(string, mask)

%ty

0 A.D

year

1960 年是 1960 年

yearly(string,mask)

%tb

-

days

用户自定义

-

上表的转换函数中, string 表示待转换的字符串, mask 指定日期(和|或)时间的组成部分在字符串中出现的顺序。例如, %td 函数 date() 中的掩码由字母 M ,D 和 Y 组成, date("2021-03-03","YMD") 表示将按照年月日显示。

提取日期元素

当把字符变量转换成 Stata 可以识别的整数后,有一系列函数可以在此返回日期信息,比如提取年份、月份、日期、季度,还可以返回日期是一周内的第几天、一年内的第几天等。这类函数有:

函数

用途

year(date)

年份;如:1980, 2002

month(date)

月份;如 1, 2, . . . , 12

day(date)

日期;1, 2, . . . , 31

halfyear(date)

前半年还是后半年; 1 or 2

quarter(date)

提取季度;1, 2, 3, or 4

week(date)

一年为第几周;1, 2, . . . , 52

dow(date)

一周内第几天; 0, 1, . . . , 6; 0 = Sunday

doy(date)

一年内第几天; 1, 2, . . . , 366

clear
input str20 var1
"2021-01-01"
"2021-04-02"
"2021-07-01"
"2021-10-01"
generate date1 = date(var1, "YMD")
gen year = year(date1) // 年份
gen month = month(date1) //月份
gen quarter = quarter(date1) //季度
gen halfyear = halfyear(date1) //半年
gen doy = doy(date1) // 一年内第几天

筛选日期

* 生成示例数据
clear
set obs 30
gen date = ""
forvalues i = 1/30{
	dis `i'
	if `i' < 10{
		replace date = "1960-01-" + "0" + "`i'" in `i'
	else{
		replace date = "1960-01-" + "`i'" in `i'
generate date1 = date(date, "YMD")
format date1 %td
 
推荐文章
道上混的饭盒  ·  Get-Date (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn
2 月前
冷静的热带鱼  ·  【jdk1.8】LocalDateTime 详细用法,保姆级 - yīyáng
2 月前
睿智的砖头  ·  java日期格式化 - 不要划水
2 月前
另类的电脑桌  ·  HUAWEI 手提電腦 - 華為香港
7 月前
痴情的高山  ·  java jwt设置token过期 jwt token 过期_mob64ca14068b0b的技术博客_51CTO博客
2 年前
冲动的啄木鸟  ·  续航与三元锂车型保持一致 零跑 T03 磷酸铁锂电芯由国轩高科供应_新闻_新出行
2 年前
冷静的楼房  ·  收评:自贸区挂牌新一轮受益股揭晓 13股涨停|自贸区|挂牌|受益股_新浪财经_新浪网
2 年前
不羁的勺子  ·  MySQL必知必会使用通配符和正则表达式数据过滤-阿里云开发者社区
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号