什么';gen和egen在Stata 12中的区别是什么?
有两个不同的命令生成新变量的原因吗什么';gen和egen在Stata 12中的区别是什么?,stata,Stata,有两个不同的命令生成新变量的原因吗 是否有一种简单的方法可以记住何时使用gen以及何时使用egen?它们都创建了一个新变量,但使用不同的函数集。当您对数据集中的其他变量进行简单转换时,通常会使用gen,例如 gen newvar = oldvar1^2 * oldvar2 在我的工作流程中,egen通常在我需要跨所有观察值工作的函数时出现,如 egen max_var = max(var) 或更复杂的指令 egen newvar = rowmax(oldvar1 oldvar2) 计算ol
是否有一种简单的方法可以记住何时使用
gen
以及何时使用egen
?它们都创建了一个新变量,但使用不同的函数集。当您对数据集中的其他变量进行简单转换时,通常会使用gen
,例如
gen newvar = oldvar1^2 * oldvar2
在我的工作流程中,egen
通常在我需要跨所有观察值工作的函数时出现,如
egen max_var = max(var)
或更复杂的指令
egen newvar = rowmax(oldvar1 oldvar2)
计算oldvar1
和oldvar2
之间每次观察的最大值。我认为没有明确的逻辑来区分这两个命令。gen
generate
可以缩写为gen
甚至g
,可以与以下数学运算符和函数一起使用:
添加+
减法-
乘法*
分部/
电源^
x的绝对值abs(x)
x的反对数exp(x)
截断为整数值int(x)或trunc(x)
x的自然对数ln(x),log(x)
四舍五入到最接近的x整数四舍五入(x)
x以y为单位四舍五入(即四舍五入(x,.1)四舍五入到小数点后一位)四舍五入(x,y)
x的平方根sqrt(x)
返回0到1之间均匀分布的数字runiform()
返回遵循标准正态分布的数字rnormal()
返回的数字服从正态分布,平均值为x,标准差为yr正态(x,y)
egen
在egen
命令中实现了许多更复杂的可能性,如以下示例所示:
egen nkids=anycount(pers1 pers2 pers3 pers4 pers5),值(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(收入)
bysort v3:egen mincome=平均值(收入)
详细的用法说明可以在这里找到。实际上,有一个非常清晰的逻辑。如果可以使用现有的数学函数完成任务,则使用
generate
。如果这是一个更复杂的问题,例如需要对一组观察结果进行处理(在Stata中不容易解决),则需要寻找合适的egen
函数。同意。但我仍然看不到有两个独立命令的逻辑。我认为Stata的逻辑非常清楚:egen
在gen
不使用时使用:)@griverorz,实现上存在差异<代码>生成是一个快速的内部命令<代码>egen正在由Stata解析,您可以使用Stata ado代码为其编写扩展。使用generate
无法执行此操作。与R相比,这是80年代留下的一个相当痛苦的遗产,在R中,您可以内联定义一个函数,并在使用后将其忘记。StasK是正确的。从技术上讲,egen
是对egen
命令的“扩展”,因为它超越了简单的计算(var1+var2
,log(var1)
等),可以添加描述性统计、标准化等。因此,在R中使用plyr
和apply
可以完成的一些工作是使用Stata中的statsby
和egen
完成的。我用它轻轻地修改置信区间和散点图。