当前位置:
文档之家› stata中变量的生成与处理
stata中变量的生成与处理
replace edu=5 if yrsch==15
replace edu=6 if yrsch==16 replace edu=7 if yrsch==21
replace edu=. if yrsch==. | yrsch==-9 replace edu=8 if yrsch==22
replace edu=9 if yrsch==23 tab1 yrsch edu *查看变量的生成是否成功
4.3.生成数值型变量
使用recode, …, gen命令生成新变量
. recode [原变量] ([原变量取值] = [新变量取值])
① ⑤ ② ⑥ ③ ⑦ ④
*= [其他取值], gen [新变量]
①:给变量重新赋值的命令
②:现有变量的名称
③:现有变量的取值 ④:新变量的取值;③和④是一个整体
• 步骤2:生成感兴趣的变量 . by province: gen order =_n
① ② ③ ④ ①:按province的分类进行排序和计算 ②:生成新变量的基本命令
③:新变量的名称
④:新变量的取值等于同一province内观察值的序次
• 步骤3:使用频数分布查看生成的结果是否正确
. tab order
②:现有变量的名称
③:将现有变量的取值下移一行([_n-1])或前移一行([_n+1])的 基本命令
. gen a = age[_n-1] (1 missing value generated) . gen b = age[_n+1] (1 missing value generated) . list
系统变量 _n
• _n 是指当前的观察值,即独一无二的观测序号,从1到 _N(_N=总样本) • _n是Stata系统内部独特的辨识器,标志从第一个观察值开 始直到最后一个观察值(_N)的序列
• _n=1为第一个观测,_n=2为第二个观测,…,_n=_N是最 后一个观测
• 该系统变量适于(1)指示观察值;(2)生成系列数值; (3)生成其他变量
3704057503
80
20
boy
3 |
+----------------------------------------------------------+
• 现在想看看每个孩子在省内的排序
使用系统变量_n生成新变量
• 步骤1:对province(即“关键变量”)进行排序
. sort province
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
⑤:*符号表示所有其他没有列出的数值,包括缺失值;recode与gen 之间有逗号(,)隔开
⑥:生成新变量的命令 ⑦:新变量的名称
• 以本章数据中的变量“yrsch”为例。前面使用gen…replace 的方法在“yrsch” 的基础上生成变量“edu”;现在使用另 一种简便的方法生成“edu”
– 由于变量edu已经存在,首源自需要删除该变量:• 数值型变量包括定距和定比变量。可以是整数、小数、负 数和正数。数值型变量可以有多种存储方式( Storage Types)
• 用str类型保存的定性等分类变量也可区分为多种形式,从 str1-str244
Stata的日期变量
• 日期(date)变量是数值型变量的一个特例。它们通常以 字符的形式输入(如: 01JAN1992 or 01/01/92),但必须以数 值型数据存储才能有用 • Stata有几个命令可以工作于日期和时间依赖(timedependent)数据 • Stata将所有的日期保存为从1960年1月1日以来的天数或月 份、季节等。此前的日期是负值,此后的是正值。SAS使 用同样的日期方式,但其起始时间是1582年的10月14日。 Excel使用1900年1月1日为默认起始日。如果读入Excel数 据,则以字符型变量输入日期,并重新格式日期
+----------------------------------------------------------------------------+ | province 1. | 2. | 3. | 4. | 21 32 32 35 personid 2106018504 3209163903 3205093703 3505154103 homesize 50 25 246 100 age 5 2 8 18 girl girl boy boy boy siblings 1 0 0 0 order 1 1 2 1 a . 5 2 8 b | 2 | 8 | 18 | 13 |
变量生成的规则(I)
生成新变量、重新定义旧变量时需遵循的一些基本规则: • 变量的名称可长达32个字符,必须以字母、汉字或字符 (@,_,#,$等)开头(不能使用空白字符或!、?等特殊 字符)。变量最后一个字符不能是句号
• 变量的名称必须唯一,不能有两个相同的变量名
• Stata区分大小写,对大写、小写敏感:Variable 不能写成 variable,反之亦然 • 使用描述性的变量名字:“变量a”这个名称没有任何意义。 调查问题是变量名称的很好选择
第四章 变量的生成与处理
导论
• Stata 对数据的处理是以变量为前提的 • 若没有需要分析的变量,则Stata将一无用处 • 熟悉变量的内容和分布、生成新变量、改变旧变量等是 处理数据的第一步
4.1. 新变量的生成、规则及注意事项
Stata的变量类型
• Stata软件生成三类变量:numeric(数值型)变量,string (字符型)变量(相当于定性变量)和date(日期)变量。 虽然日期变量以数值型变量的技术记录、存储,但二者的 用途却不同
新变量对原变量的取值重新编码。原变量照旧保存着 若无gen(edu)部分,则仅取代原有变量的取值
使用数学表达式生成新变量
生成变量的路径
Data — Create or change variables
生成变量的窗口
Data — Create or change variables — Create new variable
基本命令
Stata有四个基本的生成和修改变量的命令:gen、egen、 replace和recode • . gen和egen分别是generate和extended generate的缩写,它 们用于生成新变量
boy boy girl
0 |
0 | 0 | 3 |
6. |
7. | 8. | 9. |
35
45 32 37
3501117305
4526057606 3209163903 3702093304
25
90 25 68
13
10 2 7
girl
girl boy boy
2 |
3 | 0 | 1 |
10. |
37
①:生成新变量或替代现存变量取值的基本命令
②:新变量或其取值将被替换的变量的名称 ③:在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
变量生成的注意事项
• 尽量避免使用同一变量名称。换言之,不要使用新变量取 代旧变量。保持原始变量有助于检验我们的命令是否正确
• 充分了解原始变量的分布以及每个数值代表的含义
• 遵循不重不漏(exhaustive and mutually exclusive)原则 (详见“生成分组变量”一节) • 在变量生成后,将原始变量和新变量的取值进行对比,检 查是否有误 • 注意原始变量的缺失值
生成滞后(lag)变量或移前变量(lead)
• 在分析某些类型数据(包括常用的家庭成员数据和纵向数 据)的过程中,常常需要根据研究问题将一个样本的取值 转移到上一个(或下一个)观察值中。 • . gen a = b[_n-1]
. gen a = b[_n+1]
① ② ③ ①:需要生成的新变量的名称
. 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)
|----------------------------------------------------------|
2. |
3. | 4. | 5. |
35
32 37 45
3505154103
3205093703 3708156203 4452082404
100
246 60 20
18
8 9 6
boy
使用系统变量_N生成新变量
• 系统变量_N代表样本总数。最后一个样本_n即是_N