Stata 12中gen和egen有什么区别?

max*_*max 16 stata

是否有两个不同的命令来生成新变量?

是否有一种简单的方法可以记住何时使用gen以及何时使用egen

gri*_*orz 16

它们都创建了一个新变量,但使用不同的函数集.gen当您对数据集中的其他变量进行简单转换时,通常会使用

gen newvar = oldvar1^2 * oldvar2
Run Code Online (Sandbox Code Playgroud)

在我的工作流程中,egen通常会出现在我需要适用于所有观察的功能时,例如

egen max_var = max(var)
Run Code Online (Sandbox Code Playgroud)

或更复杂的指令

egen newvar = rowmax(oldvar1 oldvar2)
Run Code Online (Sandbox Code Playgroud)

计算oldvar1和之间每次观察的最大值oldvar2.我不认为分离这两个命令有明确的逻辑.

  • 我认为Stata的逻辑非常明确:只要`gen`不是,就会使用`egen` :) (5认同)
  • 实际上,有一个非常明确的逻辑.如果可以使用现有的数学函数完成任务,则使用`generate`.如果这是更复杂的事情,例如需要在观察组上进行(在Stata中不容易解决),则需要寻找合适的`egen`函数. (4认同)
  • @griverorz,执行方面存在差异.`generate`是一个快速的内部命令.Stata正在解析`egen`,你可以使用Stata ado-code编写扩展名.你不能用`generate`做到这一点.与R相比,这是80年代相当痛苦的遗产,您可以在内联定义函数并在使用后忘记它. (3认同)
  • 同意.但我仍然没有看到有两个单独命令的逻辑. (2认同)