代码拉取完成,页面将自动刷新
同步操作将从 songbl/stata_do 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
* ===========================
* 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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。