为什么有两个不同的命令来生成新变量?
是否有一种简单的方法可以记住何时使用gen
以及何时使用egen
?
答案 0 :(得分:15)
它们都创建了一个新变量,但使用不同的函数集。当您对数据集中的其他变量进行简单转换时,通常会使用gen
,例如
gen newvar = oldvar1^2 * oldvar2
在我的工作流程中,egen
通常会在我需要适用于所有观察的功能时出现,例如
egen max_var = max(var)
或更复杂的说明
egen newvar = rowmax(oldvar1 oldvar2)
计算oldvar1
和oldvar2
之间每次观察的最大值。我不认为分离这两个命令有明确的逻辑。
答案 1 :(得分:0)
gen
generate
可以缩写为gen
或g
,可以与以下数学运算符和函数一起使用:
+
另外-
减法*
乘法/
师^
权力有大量功能可供使用。以下是一些例子:
abs(x)
x的绝对值exp(x)
antilog of x int(x) or trunc(x)
截断为整数值ln(x), log(x)
x的自然对数round(x)
舍入到最接近的整数x round(x,y)
x以y为单位舍入(即圆(x,.1)轮到小数点后一位)sqrt(x)
x的平方根runiform()
返回0到近1 rnormal()
返回遵循标准正态分布的数字rnormal(x,y)
返回正态分布后的数字,平均值为x和s.d. of 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)
详细用法说明可在此link找到。