0

我已经声明了一个本地宏,它对应于我的 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()函数?

4

1 回答 1

1

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

egen highest_letter = rowmax(a b c d)

如上所述,在此处定义本地宏是可有可无的,除非您将其用于其他目的。无论如何,无论您是否使用宏,都会出现这里的问题;正如您所说,问题是max()逗号分隔参数的要求。

但鉴于您使用的是宏

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

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

于 2017-02-06T15:33:48.427 回答