为什么有两个不同的命令来生成一个新的变量?
有没有一种简单的方法来记住何时使用gen和何时使用egen
发布于 2012-10-21 07:52:15
它们都创建了一个新变量,但使用不同的函数集。在对数据集中的其他变量进行简单转换时,通常会使用gen
gen newvar = oldvar1^2 * oldvar2在我的工作流中,当我需要跨所有观测值工作的函数时,通常会出现egen,如
egen max_var = max(var)或更复杂的指令
egen newvar = rowmax(oldvar1 oldvar2)计算oldvar1和oldvar2之间每个观察值的最大值。我不认为有一个清晰的逻辑来区分这两个命令。
发布于 2018-06-18 06:45:38
gen
generate可以缩写为gen,甚至可以缩写为g,可以与以下数学运算符和函数一起使用:
+ addition- subtraction*乘法/除法^ power有大量的函数可用。下面是一些示例:
abs(x)截断为整数的xint(x) or trunc(x)的xexp(x)逆对数的绝对值xround(x)舍入为xround(x,y) x的最接近的整数的自然对数(即,舍入(x,xruniform()的place)sqrt(x)square根舍入到小数一位返回0到.1之间的均匀分布的数字,1rnormal()返回遵循标准正态分布的数字distributionrnormal(x,y)返回服从均值x和s.d.的正态分布的数字。of 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)可以在此link中找到详细的用法说明。
https://stackoverflow.com/questions/12993607
复制相似问题