Stata 为每个循环添加与循环变量相对应的变量
我有两个变量message_一和message_二 在变量上循环时,如果vari是varone,我想显示消息_one,如果vari是vartwo,我想显示消息_two 我想做的是不同的,但这是一个例子 我正在做以下事情,但它不起作用Stata 为每个循环添加与循环变量相对应的变量,stata,Stata,我有两个变量message_一和message_二 在变量上循环时,如果vari是varone,我想显示消息_one,如果vari是vartwo,我想显示消息_two 我想做的是不同的,但这是一个例子 我正在做以下事情,但它不起作用 foreach vari in varone vartwo { local suffix "one" if `vari'==varone local suffix "two" if `vari'==vartwo display(message_`suffix')
foreach vari in varone vartwo {
local suffix "one" if `vari'==varone
local suffix "two" if `vari'==vartwo
display(message_`suffix')
}
我应该如何更改本地线路以使其正常工作
也就是说,我想为每个循环添加一个与循环变量相对应的变量。if条件在这里不起作用。通常,它识别满足某些条件的观测值。特别是,在将内容分配给宏时,没有隐式循环覆盖观测值,因此没有必要限定局部。因此,您的语法可能会导致非法语法消息不起作用,而不是一个精确的问题报告
但是,请注意
local foo if 2 == 2
只是将文本(如果2==2)复制到本地宏foo中
你想要的也许更像
foreach vari in varone vartwo {
di cond("`vari'" == "varone", "one", "two")
}
但这个循环毫无意义,因为一条直接语句就足够了:
di "one" _n "two"
您可以这样做:
foreach vari in varone vartwo {
if "`vari'" == "varone" di "one"
else di "two"
}
这里的if命令与if限定符完全不同
我不得不猜测你在这里想要什么
首先,我在猜测中添加了双引号,您希望直接比较字符串。如果你想要别的东西,请解释
第二,像这样的陈述
display(message_one)
当且仅当message_one是预定义变量时才起作用,在这种情况下,您将在第一次观察中看到其值的显示或预定义标量。但是在一个变量中存储一条文本消息是不必要的,特别是如果在每次观察中重复相同的文本,就像在类似
gen foo = "this message"
在Stata中,这不是定义标量的好方法。在程序中将消息定义为文本字符串几乎总是最简单和最好的
你所问的显然是你真正问题的最低版本,但同样,我也不知道真正的问题是什么