从宏中查找特定列列表的最大值

Find max of specific list of columns from macro

我已经在我的Stata项目中声明了一个本地宏对应于几个变量名:

local letters a b c d

我希望能够使用宏中的所有变量生成一个新变量 letters:

gen highest_letter = max(`letters')

但是,这不起作用,并导致出现以下错误消息:

a b c d not found 

这是因为max()要求输入用逗号分隔,如:

gen highest_letter = max(a, b, c, d)

有什么方法可以让我操纵宏letters

或者使用 max() 以外的函数,这样我就可以找到变量列表中的最大值,而无需手动将它们输入到 max() 函数中?

egen 函数 rowmax() 不需要逗号。

egen highest_letter = rowmax(a b c d)

同上,在这里定义局部宏是可有可无的,除非你想用它来做其他用途。无论如何,无论您是否使用宏,都会出现这里的问题;正如您所说,问题是 max() 对 comma-separated 参数的要求。

但鉴于您使用的是宏

local letters : subinstr local letters " " ",", all 

是一种插入逗号的方式;当且仅当名称由单个空格分隔时,它才会起作用。如果真实的姓名列表很长或者您正在编写程序或 do 文件,这将比手动插入逗号更快。