相关文章推荐
个性的小马驹  ·  在Java中解析和存储包含微秒与纳秒的时间 ...·  2 周前    · 
阳光的金鱼  ·  日期时间 - Nebula Graph ...·  2 周前    · 
留胡子的扁豆  ·  KotlinでDateの操作を簡単にするライ ...·  2 周前    · 
咆哮的抽屉  ·  Java8の日時APIはとりあえずこれだけ覚 ...·  2 周前    · 
笑点低的帽子  ·  English language ...·  1 周前    · 
聪明的足球  ·  系统变量 | PingCAP 文档中心·  1 年前    · 
瘦瘦的泡面  ·  水晶报表报错:log4net初始值问题 - ...·  1 年前    · 
含蓄的眼镜  ·  Powershell基于文本字符串截取及提取 ...·  1 年前    · 
想表白的领结  ·  Handler 接收Parcelable ...·  2 年前    · 
稳重的凉茶  ·  【Kotlin】变量简介 ( 可空类型 | ...·  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
 
推荐文章
个性的小马驹  ·  在Java中解析和存储包含微秒与纳秒的时间 - 飞狐的部落格
2 周前
阳光的金鱼  ·  日期时间 - Nebula Graph Database 手册
2 周前
留胡子的扁豆  ·  KotlinでDateの操作を簡単にするライブラリをつくってみる(その7) - ローソンデジタルイノベーション テックブログ
2 周前
咆哮的抽屉  ·  Java8の日時APIはとりあえずこれだけ覚えとけ #java8 - Qiita
2 周前
笑点低的帽子  ·  English language requirements - The University of Sydney
1 周前
聪明的足球  ·  系统变量 | PingCAP 文档中心
1 年前
瘦瘦的泡面  ·  水晶报表报错:log4net初始值问题 - 小程大序的猿 - 博客园
1 年前
含蓄的眼镜  ·  Powershell基于文本字符串截取及提取语法-12-天翼云
1 年前
想表白的领结  ·  Handler 接收Parcelable ArrayList时返回空指针_getparcelablearraylistextra 空指针-CSDN博客
2 年前
稳重的凉茶  ·  【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)-腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号