||
generate — Create or change contents of variable
在Stata中一提到新建变量,用的最多的就是generate命令(新建变量)与其黄金搭档replace命令(修改变量值)。
generate命令的一般语句:generate type newvar= exp ;generate命令的菜单使用方法:Data > Create or change data > Create new variable 。replace命令的一般语句:replace oldvar =exp;命令的菜单使用方法:Data > Create or change data > Change contents of variable。
type指变量的存储类型(如byte,int,long ,float,double,str),留空(不指定)的话,新变量的存储类型取决于等号后面的表达式exp。如果结果是数值的话,新变量会根据默认存储类型(set type)存为float或double;如果结果是字符的话,新变量会根据默认存储类型存为字符变量。
实例(命令前的.不用输入,/**/之间的是程序注释):
. use http://www.stata-press.com/data/r12/genxmpl1, clear /*从Stata出版社网址读取数据genxmpl1*/
generate命令和replace命令等号右边是数值变量的话,表达式可以使用加(+)、减(-)、乘(*)、除(/)和乘方(^),用括号来控制计算的顺序,如果没有括号,Stata将采用通常的优先顺序(乘方→乘除→加减);等号右边是字符变量的话,代数运算符的加法(+)可将两个字符连接成一个。
. generate double revenue = tenure * wage /*新建变量revenue,存储类型设为double*/
. replace age2=age^2 /*将已有变量age2赋值为age的平方*/generate命令和replace命令可以使用if和in选项。
. replace age2=age^2 if age>20 /*当age大于20时,将已有变量age2赋值为age的平方*/
. replace age2=age^2 in 1/5 /*将前五条记录中的已有变量age2赋值为age的平方*/
再举一个新建字符变量的例子:
. use http://www.stata-press.com/data/r12/genxmpl2, clear /*从Stata出版社网址读取数据genxmpl2*/
. list name in 1/5 /*查看变量name的前五条记录*/
nameword(s,n)函数的返回值是字符串s中第n个单词,从头到尾数是整数,从尾往头数是负数(1是字符串s的第一个单词,-1是字符串s的最后一个单词),如果n缺失,则返回值为缺失值。
. generate lastname=word(name,2) /*将变量name值的第二字符串赋值给新建变量lastname*/
. list name lastname in 1/5 /*查看变量name和lastname的前五条记录*/
+-------------------------------+ | |||
name lastname | |||
------------------------------- | |||
1. Johanna Roman Roman | |||
2. Dawn Mikulin Mikulin | |||
3. Malinda Vela Vela | |||
4. Kevin Crow Crow | |||
5. Zachary Bimslager Bimslager | |||
+-------------------------------+ |
. describe name lastname /*查看变量name和lastname的格式*/
storage | display | value | |||||
variable | name | type | format | label | variable | label | |
name | str17 | %17s | |||||
lastname | str9 | %9s | |||||
Stata是很智能的,我们没有在generate里指定lastname的存储方式,Stata将其的存储类型设为str9,因为lastname变量最长的值是Bimslager,共9个字符长。
软件传送门:Stata 12 SE 绿色版及使用手册(共17本)
http://www.epiman.cn/thread-33102-1-1.html
手机版|会员|至尊|接种|公卫人 ( 沪ICP备06060850号-3 )
GMT+8, 2024-4-28 00:10 , Processed in 0.028355 second(s), 6 queries , Gzip On, MemCached On.
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.