且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Stata统计分析与应用(第2版)》一2.2 数据的导入

更新时间:2021-08-10 00:30:53

本节书摘来自华章出版社《Stata统计分析与应用(第2版)》一书中的第2章,第2.2节,作者 周广肃,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.2 数据的导入

能够将不同形式的数据正确导入是运用Stata进行数据分析的第一步,本节将针对此来进行介绍。

2.2.1 输入数据

在现实的经济学研究中,大部分数据都是由用户自行输入创建的,所以本节首先介绍两种输入数据的方法:一种是通过菜单方式输入,另一种是通过命令方式输入。

  1. 使用菜单方式输入数据
    假定要创建一个成绩数据表(chengji.dta),内容如表2.8所示,利用Stata的菜单操作的方法如下。

《Stata统计分析与应用(第2版)》一2.2  数据的导入

首先,单击工具栏中的图标,则会弹出数据编辑器,在其中输入相应数据,如图2.8所示。需要注意的是,每当输入完一个单元格的内容之后,需要按回车键确认。
其次,需要给变量命名。在所有数据输入完成之后,鼠标双击var1,将弹出如图2.9所示的对话框,在Name栏中填入变量的名称“name”,Label栏填入标签的内容为“姓名”,单击OK按钮完成操作。同样将var2命名为remarks。

《Stata统计分析与应用(第2版)》一2.2  数据的导入

最后,保存已经创建的数据文件。单击工具栏中的图标,然后给文件命名和选择存储路径即可。

  1. 使用命令方式输入数据
    首先必须了解数据输入的基本命令,具体语句如下:
input [type] varname [[type] varname] …

[type]表示输入的变量类型,若省略,则为Stata默认的float型;varname表示变量的名称。在这句命令之后,依次输入数据即可。
若要输入如表2.8所示的内容,可输入命令如下:

clear
input str10 name remarks
Mike 98
John 78
Ryan 86
Tom 67
Kite 96
end

save chengji(将数据文件保存在默认文件夹data中,文件名为chengji)
在以上命令语句中,clear表示清除内存;input str10 name remarks表示输入两个变量name和remarks,其中要将变量的类型写在名称前面,如str10表示name的类型为长度为10的字符型,而remarks前面没写数据类型,表示其类型为默认的浮点型;Mike 98~Kite 96表示数据的内容,一定要按照前面命令语句中变量name和remarks的顺序填写;end表示结束数据输入;save chengji将数据文件保存在默认文件夹data中,完整文件名为chengji.dta。
通过比较可以看出,利用命令方式实现数据的输入较为烦琐,所以一般并不使用。

2.2.2 使用已经保存的Stata数据

Stata默认的数据格式是.dta,这种格式的文件可以直接打开应用,命令为use,具体内容已在本章第2.1.1节做了详细介绍,这里不再赘述。

2.2.3 导入其他格式的数据

当数据文件为其他格式时,也可以导入Stata软件中进行处理,常用的命令主要有insheet、infile、infix命令,下面将通过实例进行详细介绍。

  1. 使用insheet命令,读取ASCII数据
    ASCII数据是指原始的文本数据,由电子表格和数据库程序生成的数据文件,每一行代表一个观测值(case),数值由逗号或制表符隔开,第一行可以包含变量名称,利用insheet读取时的基本命令语句如下:

insheet [varlist] using filename [,options]
在这个语句中,insheet代表导入数据的命令,[varlist] using filename代表数据文件中的某个变量,这里的options包括的选项及其含义如表2.9所示。
《Stata统计分析与应用(第2版)》一2.2  数据的导入
《Stata统计分析与应用(第2版)》一2.2  数据的导入

例如,将数据citywater.csv导入Stata中,就不能直接使用use命令了,.csv数据类型表示使用逗号分隔的一种数据类型,其具体格式如图2.10所示。

《Stata统计分析与应用(第2版)》一2.2  数据的导入

将其导入Stata的命令如下:

insheet using C:\data\citywater.csv
  1. 使用infile命令,读取没有固定格式的ASCII数据
    infile在某种程度上可以完成与insheet命令相同的功能,其与insheet命令的最大区别是前者必须指明变量名称,尤其是字符型变量。使用infile命令读取数据的基本命令语句如下:
infile varlist [_skip[(#)] [varlist [_skip[(#)] ...]]] using filename [if]
 [in] [, options]

例如,同样将数据citywater.csv导入Stata中,我们可输入如下命令语句:

infile year production capital labor using C:/data/citywater.csv

这个命令的操作结果与insheet命令相同。

  1. 使用infix命令,读取固定格式的ASCII数据
    这种固定格式的数据有固定的位数,当位数不够时,前面用0补齐,对于这种数据可用infix命令读入,其具体形式如下:
infix using dfilename [if] [in] [, using(filename2) clear]
infix specifications using filename [if] [in] [, clear]

例如,将下列一组数据(数据文件chengji.csv)转化成如表2.10所示的数据形式。chengji这组数据为用逗号隔开的数据类型,如图2.11所示,其中gender(性别)只有0和1两个数字组成,number(学号)这一栏必须由三位数组成,math和english的成绩必须由两位数组成,所以这是一个固定格式的数据,应该使用infix命令。
《Stata统计分析与应用(第2版)》一2.2  数据的导入

具体的命令语句为:

infix gender 1 number 3-5 math 7-8 english 10-11 using C:/data/chengji.csv, 
clear

在这个命令语句中,“infix gender 1”说明第1位数据为性别,“number 3-5”表示第3~5位为学号,“math 7-8”表示第7~8位为数学成绩,“english 10-11”表示第10~11位为英语成绩,“using C:/data/chengji.csv”表示原始数据文件的路径。