20

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

有没有一种简单的方法来记住何时使用gen和何时使用egen

4

2 回答 2

19

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

gen newvar = oldvar1^2 * oldvar2

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

egen max_var = max(var)

或更复杂的指令

egen newvar = rowmax(oldvar1 oldvar2)

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

于 2012-10-20T23:52:15.383 回答
1

gen

generate可以缩写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 为 y

egen

命令中实现了许多更复杂的可能性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)

详细的使用说明可以在这个链接中找到。

于 2018-06-17T22:45:38.290 回答