立即注册 登录
公卫人 返回首页

alian的个人空间 https://www.epiman.cn/?2 [收藏] [复制] [RSS]

日志

Stata 新建变量命令之generate:新建变量

已有 14827 次阅读2014-3-6 13:39 |个人分类:Stata 基础教程| 新建变量

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的格式*/











storagedisplayvalue


variablenametypeformatlabelvariablelabel








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


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

手机版|会员|至尊|接种|公卫人 ( 沪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.

返回顶部