1 Star 0 Fork 4

HuTu_chongchong/stata_do

forked from songbl/stata_do 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
time.do 3.15 KB
一键复制 编辑 原始数据 按行查看 历史
* ===========================
* STATA 课件
*
* 胡久凯 (厦门大学财政系)
* ===========================
*----------------
*1. 时间变量处理
*----------------
*STATA系统日期
// 1960 年1 月1 日定义为第0天
// 1960 年1 月为第0 月
// 1960 年第1 季度为第0 季
***思路***
*(1)先把日期型变量转化为 STATA系统日期数字
//date(变量名或者字符串,"DMY") "DMY"顺序与前方变量中的一致
//monthly(变量名或者字符串,"MY")
//quarterly(变量名或者字符串,"QY")
//mdy(月,日,年)
//ym(year , month)
//yq(year ,quarter)
*(2)然后format该变量。
cd "D:\1machine learning\1stata技术控\0stata大全\practicedata"
*-1.1 已有英文形式时间变量数据的转换
************************************
*-1.1.1
//第一步,转化为STATA系统日期
use 日期时间,clear //变量bday为字符型 形如 "1 Jan 1960"
generate birthday=date(bday,"DMY") //得到STATA系统日期数字
*注释:字符型变量 "1 Jan 1960" 变量bday 随便前方、后方、中间有没有空格,有多少个空格
generate birthday2=date(bday_01,"DMY") //得到STATA系统日期数字
//第二步,转化为习惯使用的日期
format birthday %d //%d 等价于%td,得到取值 01jan1960
format birthday %dCYND //%dCYND,取值不变,显示19600101
format birthday %dCY_N_D //%dCY_N_D,取值不变,显示1960 01 01
format birthday %dCY_m_D //%dCY_m_D,取值不变,显示1960 jan 01
format birthday %dm_D_Y //%dm_D_Y,取值不变,显示jan 01 1960
*-1.1.2 tsset 声明时间序列
*需要在转换成STATA系统日期之后使用
*tsset
/* daily timevar is %td, 0 = 1jan1960, 1 = 2jan1960, ...
weekly timevar is %tw, 0 = 1960w1, 1 = 1960w2, ...
monthly timevar is %tm, 0 = 1960m1, 1 = 1960m2, ...
quarterly timevar is %tq, 0 = 1960q1, 1 = 1960q2, ...
halfyearly timevar is %th, 0 = 1960h1, 1 = 1960h2, ...
yearly timevar is %ty, 1960 = 1960, 1961 = 1961, ...*/
tsset birthday,daily //会自动排序,若跳过了第二步,则默认用%d 1jan1960显示
*-1.1.3 后续处理 提取与转换年月日
gen year=year(birthday)
gen month=month(birthday)
gen day=day(birthday)
gen ym=ym(year(birthday),month(birthday)) //日度转月度
gen yq=yq(year(birthday),quarter(birthday))//日度转季度
*注释:
*-1.2 已有数字形式时间变量数据的转换
************************************
*int 函数:返回变量的整数部分
*mod(m,n)函数: 返回m除以n以后的余数
use 日期时间,clear //变量var5为数值型 形如 "1 Jan 1960"
gen int year9 =var5/10000
gen int month9 = mod(var5,year)/100
gen int day = mod(var5,100)
*-1.3 快速生成时间变量
************************************
*例 生成1990开始的年度变量year
clear
set obs 10
gen year = 1990+_n-1
tsset year,y
generate date = tq(1961q1) + _n-1 //直接生成系统日期数字
*tsset date,q
format date %tq
tsset date
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
其他
1
https://gitee.com/HuTu_chongchong/stata_do.git
[email protected]:HuTu_chongchong/stata_do.git
HuTu_chongchong
stata_do
stata_do
master

搜索帮助