有两个不同的命令来生成新变量是有原因的吗?
有没有一种简单的方法来记住何时使用gen和何时使用egen?
它们都创建了一个新变量,但使用不同的函数集。gen当您对数据集中的其他变量进行简单转换时,您通常会使用,例如
gen newvar = oldvar1^2 * oldvar2
在我的工作流程中,egen通常在我需要适用于所有观察的函数时出现,例如
egen max_var = max(var)
或更复杂的指令
egen newvar = rowmax(oldvar1 oldvar2)
计算oldvar1和之间的每个观测值的最大值oldvar2。我认为分离这两个命令没有明确的逻辑。
gengenerate可以缩写gen或什g至可以与以下数学运算符和函数一起使用:
+添加-减法*乘法/分配^力量有大量的功能可用。这里有些例子:
abs(x)x的绝对值exp(x)x的反对数int(x) or trunc(x)截断为整数值ln(x), log(x)x 的自然对数round(x)四舍五入到 x 的最接近整数round(x,y)x 以 y 为单位四舍五入(即 round(x,.1) 舍入到小数点后一位)sqrt(x)x 的平方根runiform()返回 0 到接近 1 之间的均匀分布数rnormal()返回遵循标准正态分布的数字rnormal(x,y)返回服从正态分布的数字,平均值为 x,sd 为 yegen命令中实现了许多更复杂的可能性egen,如下例所示:
egen nkids = anycount(pers1 pers2 pers3 pers4 pers5), value(1)egen v323r = rank(v323)egen myindex = rowmean(var15 var17 var18 var20 var23)egen nmiss = rowmiss(x1-x10 var15-var23)egen nmiss = rowtotal(x1-x10 var15-var23)egen incomst = std(income)bysort v3: egen mincome = mean(income)详细的使用说明可以在这个链接中找到。