
1.5 数据的基本操作
1.5.1 数据的基本操作概述
在对数据进行分析时,可能会遇到需要针对现有的数据进行预处理的情况。在本节中,我们将用实例讲解常用的几种处理数据的操作,包括对数据进行长短变换、把字符串数据转换成数值数据、生成随机数等。在下一节中,我们还将利用实例介绍如何定义数据子集。
1.5.2 相关数据来源

【例1.4】长江集团是一家国内大型连锁销售钢管的公司,该集团一直在北京、天津、河北、山西、内蒙古等地展开经营活动,2008-2010年在上述地区的开店情况如表1.6所示。试通过操作Stata 14.0完成以下工作:
表1.6 长江集团在2008-2010年的开店情况

(1)将数据进行长短变换。
(2)将数据变换回来,并把地区字符串变量转换成数值数据。
(3)生成一个随机变量,里面包含0~1的15个随机数据。
1.5.3 Stata分析过程
在用Stata进行分析之前,我们要把数据录入到Stata中。本例中有4个变量,分别是地区、2008年店数、2009年店数以及2010年店数。我们把地区变量设定为region,把2008年店数变量设定为number2008,把2009年店数变量设定为number2009,把2010年店数变量设定为number2010,变量类型及长度采取系统默认方式,然后录入相关数据。相关操作在第1.2节中已有详细讲述。录入完成后,数据如图1.20所示。

图1.20 案例1.4数据
先做一下数据保存,然后开始展开分析,步骤如下:
进入Stata 14.0,打开相关数据文件,弹出如图1.21所示的主界面。

图1.21 主界面
在主界面的“Command”文本框中输入操作命令并按键盘上的回车键进行确认。对应的命令分别如下:
●reshape long number,i( region) j(year):本命令的含义是将数据进行长短变换。
●reshape wide number,i( region) j(year)。
●encode region,gen(regi):本命令的含义是将数据变换回来并把地区字符串变量转换成数值数据。
●Clear。
●set obs 15。
●generate suiji=uniform():本命令的含义是生成一个随机变量,里面包含0~1的15个随机数据。
1.5.4 结果分析
图1.22是将数据进行长短变换的结果。

图1.22 将数据进行长短变换的结果
选择“Data”|“Data Editor”|“Data Editor(Browse)”命令,进入数据查看界面,可以看到如图1.23所示的变换后的数据。图1.24是将数据变换回来并把地区字符串变量转换成数值数据的结果。

图1.23 进行长短变换

图1.24 转换成数值数据的结果
选择“Data”|“Data Editor”|“Data Editor(Browse)”命令,进入数据查看界面,可以看到如图1.25所示的变换后的数据。

图1.25 变换后的数据
在将数据变换回来以后,输入第2条命令,通过选择“Data”|“Data Editor”|“Data Editor(Browse)”命令,进入数据查看界面,如图1.26所示。

图1.26 查看数据
选择“Data”|“Data Editor”|“Data Editor(Browse)”命令,进入数据查看界面,可以看到如图1.27所示的生成后的随机数据。

图1.27 随机数据
1.5.5 案例延伸
在定义随机数据时,系统命令默认的区间范围即是[0,1],那么如何实现自由取值呢?例如,从[9,18]之间随机取出15个数据。
操作命令应该相应地修改为如下形式:
clear set obs 15 generate suiji=9+9*uniform()
在命令窗口输入命令并按回车键进行确认的结果如图1.28所示。

图1.28 随机取出15个数据
那么如何选取整数呢?
操作命令应该相应地修改为如下形式:
clear set obs 15 generate suiji=9+trunc(9*uniform())
在命令窗口输入命令并按回车键进行确认的结果如图1.29所示。

图1.29 取整