在Stata中使用min / max生成新变量

时间:2017-02-18 16:34:19

标签: stata

离Stata多年后,我正在编辑代码,这些代码反复执行类似的操作:

egen min = min(x)
egen max = max(x)
generate xn = (x - min) / (max - min)
drop min max

我想将此代码减少到一行。但是,我想到的两种“自然”方式都不起作用。

gen x_index = (x - min(x)) / (max(x)- min(x))
egen x_index = (x - min(x)) / (max(x)- min(x))

我错过了Stata逻辑的哪些部分?

1 个答案:

答案 0 :(得分:2)

Stata函数max()min()需要两个或多个参数,并且如果给出一个变量作为任何一个参数,则按行(跨观察)操作。记录在例如help max()

egen函数max()min()只能在egen次调用中使用。它们可以应用单个变量,但它们用于计算单个最大值或最小值的效率非常低,除非特别重要的是将单个结果存储在变量中。除help egen处的警告外,已记录。

你认为这两种方法都不会变得更加迂回。考虑

su x, meanonly 
gen x_index = (x - r(min)) / (r(max)- r(min))

在某些情况下,仅计算一次范围可能更有效:

su x, meanonly 
scalar range = r(max) - r(min) 
gen x_index = (x - r(min)) / range 

在程序中,给标量赋予临时名称通常会更好。

egen次调用中,egen函数只能调用一次。