一:导入数据
打开Stata命令窗口,输入以下命令:
            
            
              python
              
              
            
          
          use "文件路径\数据文件名.dta", clear其中,.dta是Stata的数据文件格式。clear选项用于在打开新数据文件前关闭当前数据集。
以下是一些导入不同格式数据的方法:
            
            
              python
              
              
            
          
          import excel "path_to_file.xlsx", firstrow clearfirstrow选项表示数据的第一行包含变量名。
二:删除和保留变量
删除多个变量:
            
            
              python
              
              
            
          
          drop 变量名1 变量名2 变量名3删除变量列表:
            
            
              python
              
              
            
          
          drop 变量名1-变量名N删除除指定变量外的所有变量(即保留指定变量):
            
            
              python
              
              
            
          
          keep 变量名1 变量名2三:重命名变量
重命名单个变量:
            
            
              python
              
              
            
          
          rename 旧变量名 新变量名四:生成新变量
使用generate命令(gen)
generate 命令(通常简写为 gen)是最常用的方法来创建一个新变量。
            
            
              python
              
              
            
          
          gen 新变量名 = 表达式例如,如果想根据变量 age 生成一个表示年龄是否大于30的新变量 age_gt_30,可以这样写:
            
            
              python
              
              
            
          
          gen age_gt_30 = (age > 30)这将创建一个虚拟变量(0或1),其中1表示年龄大于30,0表示不大于30。
五:标签变量和值
在Stata中,为变量和它们的值添加标签可以使数据集更易于理解和分析。以下是如何在Stata中给变量和值添加标签的方法:
要给变量添加标签,可以使用 label variable 命令:
            
            
              python
              
              
            
          
          label variable 变量名 "标签文本"例如,如果有一个名为 age 的变量,你可以这样给它添加标签:
            
            
              python
              
              
            
          
          label variable age "年龄"要给变量的特定值添加标签,可以使用 label define 和 label values 命令。
首先,使用 label define 命令创建一个标签定义:
            
            
              python
              
              
            
          
          label define 标签名 value1 "标签文本1" value2 "标签文本2" ...例如,如果有一个名为 gender 的变量,其值为1和2,分别代表男性和女性,可以这样定义标签:
            
            
              python
              
              
            
          
          label define gender_lbl 1 "男性" 2 "女性"然后,使用 label values 命令将标签定义应用到变量上:
            
            
              python
              
              
            
          
          label values 变量名 标签名继续上面的例子:
            
            
              python
              
              
            
          
          label values gender gender_lbl现在,变量 gender 的值1和2将分别显示为"男性"和"女性"。
以下是一个完整的例子,展示了如何给一个变量及其值添加标签:
            
            
              python
              
              
            
          
          * 创建一个新变量
gen gender = 1 if sex == "male"
replace gender = 2 if sex == "female"
* 给变量添加标签
label variable gender "性别"
* 定义值的标签
label define gender_lbl 1 "男性" 2 "女性"
* 将标签应用到变量
label values gender gender_lbl通过给变量和值添加标签,你可以使Stata输出结果更加清晰,特别是在生成表格和图表时。
六:数据类型转换
在Stata中,数据类型转换是一个常见的操作,因为它确保了数据以正确的格式存储,这对于后续的分析至关重要。以下是在Stata中进行数据类型转换的方法:
如果有一个字符串变量,但需要将其转换为数值型变量,可以使用 generate (gen) 命令结合 real() 或 float() 函数:
            
            
              python
              
              
            
          
          gen newvar = real(oldvar)或者,如果数据是浮点数,可以使用:
            
            
              python
              
              
            
          
          gen newvar = float(oldvar)如果转换过程中遇到非数值字符,Stata会将那些观测值设置为缺失值(.)。
将数值型变量转换为字符串变量,可以使用 generate (gen) 命令结合 string() 函数:
            
            
              python
              
              
            
          
          gen newvar = string(oldvar)可以指定转换后的字符串长度:
            
            
              python
              
              
            
          
          gen newvar = string(oldvar, "%10.2f")destring 命令用于将字符串变量转换为数值型变量,它比 real() 或 float() 函数提供了更多的选项来处理转换过程中可能遇到的错误:
            
            
              python
              
              
            
          
          destring oldvar, generate(newvar) [options]选项包括:
replace:替换原有变量而不是生成新变量。
force:即使遇到无法转换的字符也继续转换其他值。
ignore("string"):忽略指定的字符串,将其视为缺失值。
在转换数据类型时,确保目标数据类型能够容纳原始数据,以避免数据丢失。如果字符串变量包含非数值字符,转换可能会导致数据丢失或转换为缺失值。
七:排序数据
在Stata中,排序数据是一个基本的数据管理操作,它可以帮助你按照特定的变量顺序排列数据集。以下是在Stata中排序数据的方法:
sort 命令是Stata中最常用的排序命令。允许按照一个或多个变量的升序(默认)或降序来排列数据。
要按照单个变量升序排序,可以使用以下命令:
            
            
              python
              
              
            
          
          sort variable_name如果要按降序排序,可以在变量名后添加 desc:
sort variable_name desc也可以按照多个变量进行排序。首先按照第一个变量排序,然后在第一个变量值相同的情况下,按照第二个变量排序,依此类推。
sort variable1 [variable2 [variable3 ...]] [desc]例如,如果想先按age升序排序,然后在age相同的情况下按income降序排序,可以使用:
sort age income desc八:合并数据集
在Stata中,合并数据集是一个常见的操作,它允许用户将两个或多个数据集合并成一个。
merge 命令用于根据一个或多个键变量(key variables)将两个数据集合并。
merge [merge_options] [keyvarlist] using filename [if] [in] [, options]
merge_options可以是1:1,m:1, 或1:m,指定合并的类型。
keyvarlist是在两个数据集中都存在的变量,用于匹配记录。
filename是要合并的第二个数据集的文件名。
[if]和[in]是可选的条件语句,用于限制合并的范围。
options是其他可选参数,如update或replace。
一对一合并两个数据集,假设它们都有名为id的键变量:
            
            
              python
              
              
            
          
          merge 1:1 id using another_dataset.dta多对一合并,其中第一个数据集的每条记录可以与第二个数据集的多条记录匹配:
            
            
              python
              
              
            
          
          merge m:1 id using another_dataset.dta
- 在合并之前,两个数据集应该根据键变量进行排序。
- 合并后,Stata会在结果数据集中添加一个名为
_merge的变量,它指示每条记录的合并状态(3个可能的值:1表示只在第一个数据集中,2表示只在第二个数据集中,3表示在两个数据集中都存在)。
九:数据检查
在Stata中进行数据检查是确保数据质量的重要步骤。以下是一些常用的方法来检查数据:
describe 命令提供数据集的基本信息,包括变量名称、类型、标签和观测值数量。
describesummarize 命令:提供变量的统计概要,包括均值、标准差、最小值、最大值、中位数等。
summarizelist 命令:可以列出数据集中的特定观测值,特别是缺失值。
list varname if varname == .misstable 命令:提供详细的缺失值报告。
misstable summarizetabulate 命令用于分类变量,可以检查分类变量的分布。
tabulate varnamehistogram 命令:绘制变量的直方图,帮助识别异常值。
histogram varnamegraph box 命令:绘制箱线图,用于识别异常值。
            
            
              python
              
              
            
          
          graph box varnameassert 命令:用于检查数据是否满足特定的逻辑条件。如果不满足,会显示错误。
assert varname > 0codebook 命令:提供变量的详细信息,包括值标签和缺失值的数量。
codebook varname十:处理缺失值
在Stata中处理缺失值是数据分析前的重要步骤。以下是一些处理缺失值的常用方法:
删除含有缺失值的观测:
drop if varname == .删除所有含有缺失值的变量:
drop varname if missing(varname)使用固定值替换缺失值:
replace varname = value if varname == .使用变量的均值、中位数、众数等统计量替换缺失值:
            
            
              python
              
              
            
          
          summarize varname, detail
replace varname = r(mean) if varname == .使用线性插值(适用于时间序列数据):
ipolate varname timevar, generate(newvarname)使用多重插补(Multiple Imputation)
Stata提供了mi命令集来进行多重插补,这是一个更高级的处理缺失值的方法。
mi set mlong
mi register imputed varname
mi impute chained (regress) varname = othervars, add(5)
mi estimate: regress dependentvar varname othervars如果数据是面板数据(panel data),可以使用其他时间点的观测值来填充缺失值:
bysort id: egen varname_fill = mean(varname)
replace varname = varname_fill if varname == .
drop varname_fill使用统计模型预测缺失值,并将预测值填充到缺失的位置:
            
            
              python
              
              
            
          
          regress varname othervars
predict varname_pred
replace varname = varname_pred if varname == .
drop varname_pred
- 在处理缺失值之前,了解缺失数据的机制(完全随机缺失、随机缺失、非随机缺失)是非常重要的,因为这会影响处理方法的选择。
- 删除缺失值可能会导致样本量减少,从而影响分析结果的可靠性。
- 替换缺失值可能会引入偏差,特别是如果缺失不是完全随机的。
- 多重插补是一个相对复杂的过程,但它可以提供更稳健的估计,因为它考虑了缺失值的不确定性。