【stata】一些关于数据处理的基础知识(备查代码)

主要内容来自连玉君大大的视频网课(连享会的相关文章都写的太好了,让我丧失了自己整理stata学习笔记的欲望),选择自己认为常用、重要的整理。很多内容学了不用经常会搞忘,写一个文档备查,这篇是一些stata基础知识,主要自用,大家可以酌情参考。

0. 变量导入

在正式的开始之前,需要导入相关数据,主要包括两步:

  1. 清除现有数据
  2. 导入新的数据
* - 数据清除 -
clear all					// 清除所有
cls							// 清除屏幕

* - 数据导入 -
sysuse auto.dta, clear		//导入美国1967-2002GNP数据

sysuse:命令可以导入一些stata官方提供的数据,如果使用自己的数据可用use导入,这里默认大家都会不再赘述

,clear:可选项,在导入的同时,清除现有【数据】,但是只能清除数据,可能存在一些【其他】的东西没有清除掉,所以一般在最开始前会加上一个clear all

1. 变量标签的处理

为了数据文件具有一定的可读性,通常需要通过标签的方式,对数据进行备注。包括数据本身的标签,和数据的值所对应的标签。

  1. 数据标签的定义和替换:label variable 变量名 "变量标签名"
  2. 数据值标签的定义和替换:label values 变量名 变量值标签
* - 标签 - 

* >> 变量的标签
label variable rep78 "修理记录"	// 变量标签命名

* >> 变量的值标签
label define repair 1 "好" 2 "较好" 3 "中" 4 "较差" 5 "差"	// 定义标签
label values rep78 repair	// 将此标签赋给rep78

* >> 显示值标签
labelbook					// 在查看别人的数据时经常使用

这里需要注意两点:

  1. 变量标签,最好使用引号引用,否则遇到空格会自动分段,容易引起不必要的误会

    label var rep78 修理记录1978(无空格,可以)、label var rep78 修理记录 1978(有空格,不行)

  2. 值标签需要先定义:label define 值标签名 数值 "数值标签"

  3. 同一个值标签可以赋给多个不同的变量,比如同样的0-1定序变量

2. 变量类型转换

无论什么软件进行数据处理,变量类型转换都是一个比较大的问题,特别是字符数字转换成数字,提供两种方式:

  1. destring,简单,但是只能用于纯数字的(如ID,年份等)
  2. 正则表达式对字符串进行提取,稍微比较复杂
* - 变量类型 -

* >> 浮点强制转为整数
describe headroom			// 查看headroom类型
recast int headroom, force	// 类型强制转换
describe headroom			// 查看headroom类型
compress					// 精简变量类型 --> 主要用于字符串截尾

* >> 字符串转换为数值
gen year = "1978"			// 设置一个新的年份字符串变量[但是变量必须全为数值字符]
destring year, replace		// 转换为数值型并对原有变量进行替换

* >> 含有字符串的数字提取
gen year = "1978年"			// 创建一个既有数字又有文字的变量
gen Year = real(regexs(1)) if regexm(year ,"([0-9]+)")	// 这里提供提取整数的,提取小数可以自行研究

3. 描述性统计

大多数文献要求,在最开始提供数据描述性统计的结果。并且对数据进行描述性统计,可以很快的了解到数据的特征,能够帮助发现数据异常情况。最常使用的命令包括:

  1. sum 变量名:统计变量的样本数、均值、标准差和极值
  2. table 变量1 变量2, c(统计量 变量):按照变量1变量2进行分类统计(通过bysortsum实现)
  3. tabstat 变量名:和sum基本类似,默认只返回均值
* - 描述性统计 - 

* >> 简单统计
summarize price mpg rep78						// 简单描述性统计
format price mpg rep78 %4.2f					// 保留两位小数
summarize price mpg rep78, format				// 按数据情况进行描述性统计

* >> 分类统计
table foreign rep78, c(mean length) f(%6.2f) center row col	// 分类统计length的均值
note: "tab为tabulate的简写,而非table的简写"

* >> 统计方法
tabstat price mpg rep78, stats(mean med min max) ///	// 统计均值 中位数 最值
						 col(s)format(%6.2f)			// 转置 保留两位小数
* >> 结果输出
tabexport price mpg rep78 using "Output.txt",	///		// 输出结果
		  statistics(mean sd min max count) replace		// 均值 标准差 样本数
// shellout "Output.txt"								// 打开txt文件
erase "Output.txt"										// 删除txt文件

还需要注意的是,为减少后续处理,可以在进行统计时变对变量格式进行设置如%6.2f,有过计算机基础的应该都比较好理解,这里附上更改变量格式的代码

* - 变量显示格式 - 
list price gear in 1/5		// 列出前5个样本的price和gear
format price %6.2f			// 占6位,保留2位小数
format gear %-6.3f			// 左对齐
list price gear in 1/5

4. 直方图绘制

很多时候通过绘制图像,可以更好的了解样本和变量的情况

  1. 散点图:简单观察xy的关系,以及是否存在关系
  2. 直方图:了解样本的分布(是否存在极端值,是否基本符合正态)
  3. 变量相关矩阵:研究变量之间的关系
* >> 散点图绘制
scatter weight length		// 绘制散点图Y-X图像
* >> 直方图绘制
histogram weight, normal	// 绘制直方图加正态曲线
kdensity weight				// 绘制密度函数曲线
* >> 相关系数矩阵
graph matrix price weight length	// 绘制两两相关系数矩阵

5. 完整代码

提供完整代码,可直接运行(本人使用stata 15版本)

/*
	Theme:数据处理代码
	Author:CZY-CQU
	Date:2021年6月7日10:53:21
*/

* - 数据清除 -
clear
cls

* - 数据导入 -
sysuse auto.dta, clear		//导入美国1967-2002GNP数据
* ----------------------------------------------------------- *

* - 标签 - 

* >> 变量的标签
label variable rep78 "修理记录"	// 变量标签命名

* >> 变量的值标签

label define repair 1 "好" 2 "较好" 3 "中" 4 "较差" 5 "差"	// 定义标签
label values rep78 repair	// 将此标签赋给rep78

* >> 显示值标签
labelbook

* ----------------------------------------------------------- *

* - 变量类型 -

* >> 浮点强制转为整数
describe headroom			// 查看headroom类型
recast int headroom, force	// 类型强制转换
describe headroom			// 查看headroom类型
compress	// 精简变量类型 --> 主要用于字符串截尾

* >> 字符串转换为数值
gen year = "1978"			// 设置一个新的年份字符串变量
destring year, replace		// 转换为数值型并对原有变量进行替换

* ----------------------------------------------------------- *

* - 变量显示格式 - 
list price gear in 1/5
format price %6.2f			// 占6位,保留2位小数
format gear %-6.3f			// 左对齐
list price gear in 1/5

* ----------------------------------------------------------- *

* - 描述性统计 - 

* >> 简单统计
summarize price mpg rep78						// 简单描述性统计
format price mpg rep78 %4.2f					// 保留两位小数
summarize price mpg rep78, format				// 按数据情况进行描述性统计

* >> 分类统计
table foreign rep78, c(mean length) f(%6.2f) center row col
note: "tab为tabulate的简写,而非table的简写"

* >> 统计方法
tabstat price mpg rep78, stats(mean med min max) ///	// 统计均值 中位数 最值
						 col(s)format(%6.2f)			// 转置 保留两位小数
* >> 结果输出
tabexport price mpg rep78 using "Output.txt",	///			// 输出结果
		  statistics(mean sd min max count) replace		// 均值 标准差 样本数
// shellout "Output.txt"		// 打开txt文件
erase "Output.txt"		// 删除txt文件


* ----------------------------------------------------------- *

* - 基本图像绘制 - 

* >> 散点图绘制
scatter weight length		// 绘制散点图Y-X图像
* >> 直方图绘制
histogram weight, normal	// 绘制直方图加正态曲线
kdensity weight				// 绘制密度函数曲线
* >> 相关系数矩阵
graph matrix price weight length	// 绘制两两相关系数矩阵

notes // 显示所有的note
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值