我已经声明了一个与我的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()
函数?
答案 0 :(得分:1)
egen
函数rowmax()
不需要逗号。
egen highest_letter = rowmax(a b c d)
如上所述,除非您将其用于其他目的,否则在此处定义本地宏是可有可无的。无论如何,无论你是否使用宏,都会出现问题。正如您所说,问题是max()
对逗号分隔的参数的要求。
但鉴于您使用的是宏
local letters : subinstr local letters " " ",", all
是一种插入逗号的方法;当且仅当名称由单个空格分隔时,它才会起作用。如果真正的名称列表很长或者您正在编写程序或执行文件,那么它将比手动插入逗号更快。