NO.3 Stata标签与变量的基础操作

c8ea15ce36d3d539563f400a3a87e950342ab0fd

标签的操作


Stata中的标签分为数据集标签、变量标签和值标签,这些标签可以提供许多便捷的数据操作,其中以值标签的使用最频繁,其修改命令为label,在Stata中输入help label可以查看其使用方式:

    Label dataset
        label data ["label"]
        
    Label variable
        label variable varname ["label"]
        
    Define value label
        label define lblname # "label" [# "label" ...] [, add modify replace nofix]

    Assign value label to variables
        label values varlist [lblname|.] [, nofix]

为数据集添加标签lable + 数据集名称 + 标签名

为变量添加标签lable var + 变量名 + 标签名

为变量值添加标签:为变量值添加标签需分两步操作:第一步定义标签,第二步将标签赋予变量值。以示例数据集cancer为例,为died变量值为1值赋予标签”死亡”,值为0的值赋予标签”存活”:

  • 输入sysuse cancer命令载入数据集。

  • 首先定义一个标签d:
label define  d 1"死亡" 0"存活" 
  • 将标签d赋予died变量值:
label value died d 

标签的更改:其命令形式为:

label define lblname # "label" [# "label" ...] [, add modify replace nofix]

改变一个已经定义好的标签只需在label dfine命令后添加, modify即可,对应的addreplace分别表示添加和替换,nofix的作用是要求Stata不为标签的内容而改变原变量的存储容量。

变量的基础操作


排序函数:sortgsort。同样输入help sorthelp gsort 可以得到这两个函数的用法示意。

 sort varlist [in] [, stable]
gsort [+|-] varname [[+|-] varname ...] [, generate(newvar) mfirst]

sort只能进行升序排序,而gsort添加-之后可以进行降序排序。

变量重命名函数rename,命令形式:

rename old_varname new_varname

建立新变量generate,命令形式:

generate [type] newvar[:lblname] =exp [if] [in] [, before(varname) | after(
                 varname)]

以示例数据集auto为例,新建一个变量price_level,如果price>5000,其值为high

  • 输入命令sysuse auto
  • 输入命令generate price_level="high" if price>5000 , before(price)。可以看到price变量前新增了一个变量price_level

更新原变量replace,命令形式:

replace oldvar =exp [if] [in] [, nopromote]

其用法基本和generate一样,需要注意的是nonpromote参数:当原变量是整数int时,replace默认改成浮点数;若添加nonpromote,则仍为整数。

egen命令egen表示对generate的扩展,extension generate,它有一系列自己的函数:包括求综合、最大值、最小值、中位数等等,可以在help中查看。常用函数:

egen newvar=max(a), 新变量newvar的值等于变量a的最大值
egen newvar=mean(a),新变量newvar的值等于变量a的平均值
egen newvar=min(a),新变量newvar的值等于变量a的最小值
egen newvar=median(a),新变量newvar的值等于变量a的中值
egen newvar=sd(a),新变量newvar的值等于变量a的标准差
egen newvar=total(a),新变量newvar的值等于变量a的求和
egen newvar=pc(a),新变量newvar的值等于变量a标准化加总后的百分比。

变量的删除与保留dropkeep,命令形式:

drop/keep varlist;删除/保留变量
drop/keep if exp;根据条件删除/保留变量值
drop/keep in range [if exp];删除/保留特定范围的变量值

常用运算表达式与运算函数


基础运算符+(加)、-(减)、*(乘)、/(除)、^(乘方),基本运算符的使用与excel一样,不再赘述。

关系运算符==(等于,注意是两个等号,一个等号表示赋值,两个等号才是关系判断)、!=(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)

逻辑运算符&(并)、|(或)

in/if

list value in 4/8: 4-8个数的值
list value in f/10: 1-10个数的值
list value in 10/l: 10-最后一个数的值
list value in -10/l:倒数10个数的值
list value if value>20:大于20的值

by/bysortby作为前缀用来分组,单独使用by之前,必须先使用sort函数排序,而bysort则可以直接使用。以aotu数据集为例,新建一个变量,分别求出国产车和进口车的平均价格。命令如下

bysort Foreign: egen avr_price=mean(price)

常用运算函数

abs(x) 绝对值
ceil(x) 大于或等于x的最小整数
floor(x) 小于或等于x的最大整数
mod(x,y) x/y的余数
round(x) x四舍五入的整数
sign(x) 符号函数:x<0时为-1,x=0时为0,x>0时为1

命令整理


  • labellabel varlabel definelabel value
  • sortgsort
  • generatereplaceegendropkeep
  • absceilfloormodroundsign

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s