语法与选项
egen [type] newvar = fcn(arguments) [if] [in] [, options]
by is allowed with some of the egen functions, as noted below.
where depending on the fcn, arguments refers to an expression, varlist, or numlist, and the options are also fcn dependent, and where fcn is
1.anycount(varlist), values(integer numlist)
不能与 by 结合。它返回 varlist 中符合 values(integer numlist) 的个数。integer numlist 必须为整数值,或者整数列表。如果使用 if 或 in 限制样本范围,那么被排除的任何观察值的结果将设置为0 。Also see anyvalue(varname) 和 anymatch(varlist)
//例子
sysuse auto.dta,clear
br
egen id=anycount(mpg) in 2/10, values(1/20 23)
br mpg id
2.anymatch(varlist), values(integer numlist)
不能与by结合。如果 varlist 中的任何变量等于提供的任何整数值 numlist,则为1,否则为0。如果使用 if 或 in 限制样本范围,那么被排除的任何观察值的结果将设置为0 。Also seeanyvalue(varname)和 anycount(varlist)
//例子
sysuse auto.dta,clear
egen id1 =anycount(mpg) , values(1/20 23)
egen id2=anymatch(mpg), values(1/20 23)
gen n=id-id1
br mpg id1 id2 n
3.anyvalue(varname), values(integer numlist)
不能与by结合。如果 varname 等于 values(integer numlist) 提供的数字列表中的任何整数值,则返回 varname 的值,否则为缺失值"."。Also see anymatch(varlist) 和 anycount(varlist)
//例子
sysuse auto.dta,clear
replace rep78=. in 2/5
egen id1 = anycount(rep78) , values(1/2 3)
egen id2 = anymatch(rep78) , values(1/2 3)
egen id3 = anyvalue(rep78) , values(1/2 3)
br rep78 id1 id2 id3
4.concat(varlist) [, format(%fmt) decode maxlength(#) punct(pchars)]
不能与by结合。它连接 varlist 以产生一个字符串变量。字符串变量的值是不变的,数值型变量的值按原样转换为字符串,或者使用数值进行转换在 format(%fmt) 选项下格式化,或者在decode选项下decoded,在这种情况下 maxlength() 也可能是用于控制所使用的最大标签长度。默认情况下,变量是端到端添加的。punct(pchars) 可能是pchar用于指定标点符号,如空格 punct(" ") 或逗号 punct(,)、标点 punct(.)。
//例子
sysuse auto.dta,clear
br
egen id1 = concat(make)
egen id2 = concat(price)
egen id3 = concat(price) ,format(%8.2f) //取两位小数点
egen id4 = concat(price) ,decode maxlength(1)punct(",")
egen id5 = concat(make)
br make price id1 id2 id3 id4 id5
5.count(exp)
创建一个常量,常量的数值等于 exp 中不为缺失值的样本观察数。例如,exp 变量中有10个观察值,缺失值有3个,则count(exp)=7。请参阅 rownonmiss() 和 rowmiss()。
//例子
sysuse auto.dta,clear
replace price=. in 2 /10
egen id = count(price)
br price id