stata中变量的生成与处理.ppt_第1页
stata中变量的生成与处理.ppt_第2页
stata中变量的生成与处理.ppt_第3页
stata中变量的生成与处理.ppt_第4页
stata中变量的生成与处理.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 变量的生成与处理,导论,Stata 对数据的处理是以变量为前提的 若没有需要分析的变量,则Stata将一无用处 熟悉变量的内容和分布、生成新变量、改变旧变量等是处理数据的第一步,4.1. 新变量的生成、规则及注意事项,Stata的变量类型,Stata软件生成三类变量:numeric(数值型)变量,string(字符型)变量(相当于定性变量)和date(日期)变量。虽然日期变量以数值型变量的技术记录、存储,但二者的用途却不同 数值型变量包括定距和定比变量。可以是整数、小数、负数和正数。数值型变量可以有多种存储方式( Storage Types) 用str类型保存的定性等分类变量也可区分为多种形式,从str1-str244,Stata的日期变量,日期(date)变量是数值型变量的一个特例。它们通常以字符的形式输入(如: 01JAN1992 or 01/01/92),但必须以数值型数据存储才能有用 Stata有几个命令可以工作于日期和时间依赖(time-dependent)数据 Stata将所有的日期保存为从1960年1月1日以来的天数或月份、季节等。此前的日期是负值,此后的是正值。SAS使用同样的日期方式,但其起始时间是1582年的10月14日。Excel使用1900年1月1日为默认起始日。如果读入Excel数据,则以字符型变量输入日期,并重新格式日期,生成变量的路径,Data Create or change variables,生成变量的窗口,Data Create or change variables Create new variable,基本命令,Stata有四个基本的生成和修改变量的命令:gen、egen、replace和recode . gen和egen分别是generate和extended generate的缩写,它们用于生成新变量 . replace和recode用来改变现存变量的属性或数值 . replace需要与gen一起使用;二者的区别在于,gen用于生成新变量,replace用于重新定义已经存在的变量 . recode也可以与gen一起使用,基本语法,. gen 变量名 = 表达式1 . replace 变量名 = 表达式2 if 条件 :生成新变量或替代现存变量取值的基本命令 :新变量或其取值将被替换的变量的名称 :在gen命令的取值不同于在replace命令的取值 :替换原有变量的取值必须满足if指定的条件,*yr of schooling recoded(这是一个注释;*代表注释) gen edu=0 replace edu=1 if yrsch=11 replace edu=2 if yrsch=12 replace edu=3 if yrsch=13 replace edu=4 if yrsch=14 replace edu=5 if yrsch=15 replace edu=6 if yrsch=16 replace edu=7 if yrsch=21 replace edu=8 if yrsch=22 replace edu=9 if yrsch=23,replace edu=10 if yrsch=24 | yrsch=27 replace edu=11 if yrsch=25 | yrsch=28 replace edu=12 if yrsch=26 | yrsch=29 replace edu=13 if yrsch=31 replace edu=14 if yrsch=32 replace edu=15 if yrsch=33 replace edu=16 if yrsch=34 replace edu=17 if yrsch=35 replace edu=18 if yrsch=36 replace edu=. if yrsch=. | yrsch=-9 tab1 yrsch edu *查看变量的生成是否成功,变量生成的规则(I),生成新变量、重新定义旧变量时需遵循的一些基本规则: 变量的名称可长达32个字符,必须以字母、汉字或字符(,_,#,$等)开头(不能使用空白字符或!、?等特殊字符)。变量最后一个字符不能是句号 变量的名称必须唯一,不能有两个相同的变量名 Stata区分大小写,对大写、小写敏感:Variable 不能写成 variable,反之亦然 使用描述性的变量名字:“变量a”这个名称没有任何意义。调查问题是变量名称的很好选择,变量生成的注意事项,尽量避免使用同一变量名称。换言之,不要使用新变量取代旧变量。保持原始变量有助于检验我们的命令是否正确 充分了解原始变量的分布以及每个数值代表的含义 遵循不重不漏(exhaustive and mutually exclusive)原则(详见“生成分组变量”一节) 在变量生成后,将原始变量和新变量的取值进行对比,检查是否有误 注意原始变量的缺失值,4.2利用系统变量或下划线变量(_n和_N)生成新变量 Stata有几个下划线变量(_variables,读为“underscore variables”),因包含下划线而得名。这类变量并不出现在Stata的Variables(变量)窗口中,故又称系统变量。其中,经常使用的有_n 和_N。系统变量_n 和_N对于数据的管理和处理十分有用,尤其是与特殊选项by同时使用时,系统变量 _n,_n 是指当前的观察值,即独一无二的观测序号,从1到_N(_N=总样本) _n是Stata系统内部独特的辨识器,标志从第一个观察值开始直到最后一个观察值(_N)的序列 _n=1为第一个观测,_n=2为第二个观测,_n=_N是最后一个观测 该系统变量适于(1)指示观察值;(2)生成系列数值;(3)生成其他变量,使用系统变量_n指示观察值,系统变量_n表示每个观察值的位置(numbering observations)。其原则是: 当前观察值: _n 总观察值(最后一个观察值_n): _N 第一个观察值: 1 最后一个观察值: _N 滞后一个(lag)观察值: _n-1 前移一个(lead)观察值: _n+1 第27个观察值: 27,假如现有以下数据: +-+ | province personid homesize age girl siblings | (省份) (个人ID)(家庭规模)(年龄)(女孩)(姊妹数量) |-| 1. | 21 2106018504 50 5 girl 1 | 2. | 35 3505154103 100 18 boy 0 | 3. | 32 3205093703 246 8 boy 0 | 4. | 37 3708156203 60 9 boy 0 | 5. | 45 4452082404 20 6 girl 3 | 6. | 35 3501117305 25 13 girl 2 | 7. | 45 4526057606 90 10 girl 3 | 8. | 32 3209163903 25 2 boy 0 | 9. | 37 3702093304 68 7 boy 1 | 10. | 37 3704057503 80 20 boy 3 | +-+ 现在想看看每个孩子在省内的排序,使用系统变量_n生成新变量,步骤1:对province(即“关键变量”)进行排序 . sort province 步骤2:生成感兴趣的变量 . by province: gen order =_n :按province的分类进行排序和计算 :生成新变量的基本命令 :新变量的名称 :新变量的取值等于同一province内观察值的序次 步骤3:使用频数分布查看生成的结果是否正确 . tab order,使用系统变量_N生成新变量,系统变量_N代表样本总数。最后一个样本_n即是_N 使用前面的数据,看看每个省共有几个孩子在样本中 步骤1:对province进行排序 步骤2:生成感兴趣的变量。其命令是: . by province: gen ceb=_N 步骤3:查看结果正确与否 . tab ceb,生成滞后(lag)变量或移前变量(lead),在分析某些类型数据(包括常用的家庭成员数据和纵向数据)的过程中,常常需要根据研究问题将一个样本的取值转移到上一个(或下一个)观察值中。 . gen a = b_n-1 . gen a = b_n+1 :需要生成的新变量的名称 :现有变量的名称 :将现有变量的取值下移一行(_n-1)或前移一行(_n+1)的基本命令,. gen a = age_n-1 (1 missing value generated) . gen b = age_n+1 (1 missing value generated) . list +-+ | province personid homesize age girl siblings order a b | |-| 1. | 21 2106018504 50 5 girl 1 1 . 2 | 2. | 32 3209163903 25 2 boy 0 1 5 8 | 3. | 32 3205093703 246 8 boy 0 2 2 18 | 4. | 35 3505154103 100 18 boy 0 1 8 13 | 5. | 35 3501117305 25 13 girl 2 2 18 9 | 10. | 45 4526057606 90 10 girl 3 2 6 . | +-+,4.3生成数值型变量,使用recode, , gen命令生成新变量,. recode 原变量 (原变量取值 = 新变量取值) *= 其他取值, gen 新变量 :给变量重新赋值的命令 :现有变量的名称 :现有变量的取值 :新变量的取值;和是一个整体 :*符号表示所有其他没有列出的数值,包括缺失值;recode与gen之间有逗号(,)隔开 :生成新变量的命令 :新变量的名称,以本章数据中的变量“yrsch”为例。前面使用genreplace的方法在“yrsch” 的基础上生成变量“edu”;现在使用另一种简便的方法生成“edu” 由于变量edu已经存在,首先需要删除该变量: . drop edu . recode yrsch 0=0 11=1 12=2 13=3 14=4 15=5 16=6 21=7 22=8 23=9 24 27=10 25 28=11 26 29=12 31=13 32=14 *=.,gen (edu) 该命令在原变量yrsch的基础上生成一个新变量(edu) 新变量对原变量的取值重新编码。原变量照旧保存着 若无gen(edu)部分,则仅取代原有变量的取值,使用数学表达式生成新变量,任何有效的数学表达式在生成变量时都适用。既可以是加、减、乘、除的单独表达式,也可以是混合表达式: . gen a = b + c + d 加法:将变量b,c,d的数值累加起来,生成新变量a . gen a = b - c 减法:将变量b的数值减去变量c的数值,得到变量a . gen a2 = a*a 乘法:该命令生成新变量a2;a*a是a x a的表达方式 . gen double a = b/c 除法:用变量b的数值 除以变量c的数值,得到新变量a。该变量定义为double类型 . gen a = b/(c2) 新变量a的取值等于变量b的取值除以变量c取值的平方,4.4生成分类变量,*age group . gen agegrp=0 . replace agegrp=1 if age=0 & age=5 & age=10 & age=15 . replace agegrp=. if age = . . egen agegrp = cut(age), at(0,5,10, 15,20),4.5生成虚拟变量 (dummy, dichotomous variable),方法1,. gen 新变量名 = b 限制条件 :生成新变量的基本命令 :新变量名 :旧变量名 :当b满足某种条件时,生成新变量 比如: . gen xiaoxue = edu7 或 . gen xiaoxue =edu=6 或 . gen byte xiaoxue = edu7 或 . gen byte xiaoxue =edu6,方法2,. gen 变量名 1 if取值为1的限制条件 . replace(变量名0 if取值为0的限制条件 比如: . gen xiaoxue = 1 if edu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论