使用 if 语句为局部变量赋值
Assign value to local variable with if-statement
我正在尝试为 Stata 15 中的局部宏变量分配条件值。
我有一个只能有两个值的局部变量; "o" 或 "u"。然后我有另一个局部变量,我想得到这两个的另一个字母而不是第一个局部变量。
我的代码如下所示:
local utr o /*Can be assigned either "o" or "u".*/
local uin u if `utr' == o
local uin o if `utr' == u
di "utr = `utr'"
di "uin = `uin'"
我还尝试了此代码的多种变体,其中我在 if 语句中只有一个“=”,而在条件语句中的字母周围有“”。
我收到一条错误消息:
if not allowed
所以我想如果可能的话我不能这样做。
是否可以在 Stata 中分配 "automated" 条件局部变量值?
如果可能的话,我应该怎么做?
局部宏是不是变量;这两个在 Stata 中是不同的。
以下对我有用:
local utr o // can be assigned either "o" or "u"
if "`utr'" == "o" local uin u
else local uin o
display "utr = `utr'"
utr = o
display "uin = `uin'"
uin = u
有关 if
命令和 if
限定符之间区别的解释,请参阅 this page。
让我们关注局部宏定义中不允许使用的 if
限定符。这是对@Pearly Spencer 的很好回答的补充,而不是它的替代品。
首先,local
命令的语法图(例如 help local
让你到达那里)没有显示它是允许的。这几乎总是意味着它真的被禁止了。 (偶尔会有未记录的语法细节。)
其次,更重要的是,这里没有理由使用 if
限定符。 if
限定符允许根据观察的子集得出不同的结果,但局部宏与严格意义上的数据集无关。它们同样适用于所有观察结果,甚至适用于 none。
None 否认像你这样的程序员经常想要定义以其他东西为条件的局部宏,并且需要其他东西,例如 if
命令或 cond()
。
我正在尝试为 Stata 15 中的局部宏变量分配条件值。
我有一个只能有两个值的局部变量; "o" 或 "u"。然后我有另一个局部变量,我想得到这两个的另一个字母而不是第一个局部变量。
我的代码如下所示:
local utr o /*Can be assigned either "o" or "u".*/
local uin u if `utr' == o
local uin o if `utr' == u
di "utr = `utr'"
di "uin = `uin'"
我还尝试了此代码的多种变体,其中我在 if 语句中只有一个“=”,而在条件语句中的字母周围有“”。
我收到一条错误消息:
if not allowed
所以我想如果可能的话我不能这样做。
是否可以在 Stata 中分配 "automated" 条件局部变量值?
如果可能的话,我应该怎么做?
局部宏是不是变量;这两个在 Stata 中是不同的。
以下对我有用:
local utr o // can be assigned either "o" or "u"
if "`utr'" == "o" local uin u
else local uin o
display "utr = `utr'"
utr = o
display "uin = `uin'"
uin = u
有关 if
命令和 if
限定符之间区别的解释,请参阅 this page。
让我们关注局部宏定义中不允许使用的 if
限定符。这是对@Pearly Spencer 的很好回答的补充,而不是它的替代品。
首先,local
命令的语法图(例如 help local
让你到达那里)没有显示它是允许的。这几乎总是意味着它真的被禁止了。 (偶尔会有未记录的语法细节。)
其次,更重要的是,这里没有理由使用 if
限定符。 if
限定符允许根据观察的子集得出不同的结果,但局部宏与严格意义上的数据集无关。它们同样适用于所有观察结果,甚至适用于 none。
None 否认像你这样的程序员经常想要定义以其他东西为条件的局部宏,并且需要其他东西,例如 if
命令或 cond()
。